#include <cstdlib>
struct Random {
Random();
Random(int);
int Next();
int Next(int);
int Next(int , int );
double NextDouble();
void NextBytes(char*);
private:
int Seed;
};
Random::Random(){
Seed = 0;
}
Random::Random(int seed){
Seed = seed;
}
int Random::Next() {
srand ( Seed );
return rand() % RAND_MAX;
}
int Random::Next(int nxt) {
srand ( Seed );
nxt++;
return rand() % nxt ;
}
int Random::Next(int min, int max) {
srand ( Seed );
if(min > max) // If min > max then swap their values
{
int temp = max;
max = min;
min = temp;
}
return (rand() % (max-min)+min);
}
double Random::NextDouble() {
srand ( Seed );
//return (double)((rand()%10 + 1)*0.1) ; Returns exactly values e.g : 0.1 , 0.4 , 0.8
return static_cast<double>(rand())/RAND_MAX;
}
void Random::NextBytes(char* array) {
srand ( Seed );
}
for(int i = 0; i < strlen(array); i++)
{
int randed = rand()% 256 + 1;
array[i] = (char) randed; // dont work
array[i] = static_cast<char>(randed); // dont work
array[i] = reinterpret_cast<char>(randed); // dont work
array[i] = boost::lexical_cast<char>(randed) // dont work with great numbers
}
#include <cstdlib>
#include <cstring>
#include <iostream>
using namespace std;
struct Random {
Random();
Random(int);
int Next();
int Next(int);
int Next(int , int );
double NextDouble();
char* NextBytes(char[]);
private:
int Seed;
};
Random::Random(){
Seed = Next();
}
Random::Random(int seed){
Seed = seed;
}
int Random::Next() {
srand ( Seed );
return rand() % RAND_MAX;
}
int Random::Next(int nxt) {
srand ( Seed );
nxt++;
return rand() % nxt ;
}
int Random::Next(int min, int max) {
srand ( Seed );
if(min > max) // If min > max then swap their values
{
int temp = max;
max = min;
min = temp;
}
return (rand() % (max-min)+min);
}
double Random::NextDouble() {
srand ( Seed );
//return (double)((rand()%10 + 1)*0.1) ; Returns exactly values e.g : 0.1 , 0.4 , 0.8
return static_cast<double>(rand())/RAND_MAX;
}
char* Random::NextBytes(char array[]) {
srand ( Seed );
string s;
for(int i = 0; i < strlen(array);i++)
{
int aids = rand() % 255 + 1;
char buffer[16];
sprintf(buffer,"%d",aids);
s += buffer;
}
return (char*) s.c_str();
}