C/C++随机数效果不好怎么办

今天打算用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;
}

img

img

img

问题解决啦。我用二进制编码代替浮点数编码。C语言的01随机性还是蛮好的。

img