// random.cpp - Random number generation. // // (c) 2016-2017 Xestia Software Development. // // This file is part of Xestia Calendar. // // Xestia Calendar is free software: you can redistribute it and/or modify // it under the terms of the GNU General Public License as published by the // Free Software Foundation, version 3 of the license. // // Xestia Calendar is distributed in the hope that it will be useful, // but WITHOUT ANY WARRANTY; without even the implied warranty of // MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the // GNU General Public License for more details. // // You should have received a copy of the GNU General Public License along // with Xestia Calendar. If not, see #include "random.h" using namespace std; int GenerateRandomNumber(int powerOf){ #if defined(WIN32) // Seed the randomiser! srand(time(0)); int powerOfCalculation = (int)pow(2, (double)powerOf); int randomNumber = rand() % powerOfCalculation; #else // Get four bytes from /dev/urandom. int randomData = 0; ifstream randomFilehandle("/dev/urandom", ios::in|ios::binary); char *randomDataInput; randomDataInput = new char [4]; randomFilehandle.read(randomDataInput, 4); // Seed the randomiser! srand(*randomDataInput); delete [] randomDataInput; randomFilehandle.close(); int powerOfCalculation = (int)pow(2, (double)powerOf); int randomNumber = rand() % powerOfCalculation; #endif return randomNumber; }