今天打算用C/C++写遗传算法的代码,发现随机性效果不好,随机数都很相近。
下面代码是生成一个小数点四位、[-5,5]的实数
#include <iostream>
using namespace std;
#include <stdio.h>
#include <stdlib.h>
#include <time.h>
int main()
{
srand((unsigned)time(NULL));
int max = 100000;
int r = rand() % max;
float f =(float) r / 10000;
printf("%.4f",f-5);
return 0;
}
问题解决啦。我用二进制编码代替浮点数编码。C语言的01随机性还是蛮好的。