Random C++;和rand/srand行为未按预期执行

Random C++;和rand/srand行为未按预期执行,random,srand,Random,Srand,我使用cstdlib和g++中的rand和srand作为编译器。我在玩游戏,试图生成一些伪随机数,我得到了一些意想不到的有偏差的结果。我很好奇,所以我写了一个简单的函数。预期的行为是生成一个介于1和10之间的随机数,并打印出来,以显示一个100倍的屏幕。平均值的预期值应为5。但是,当我运行此函数时,它将生成一个介于1和10之间的单个随机数,并将其打印100倍,平均值等于生成的随机数 #include <iostream> #include <cstdlib> #inclu

我使用cstdlib和g++中的rand和srand作为编译器。我在玩游戏,试图生成一些伪随机数,我得到了一些意想不到的有偏差的结果。我很好奇,所以我写了一个简单的函数。预期的行为是生成一个介于1和10之间的随机数,并打印出来,以显示一个100倍的屏幕。平均值的预期值应为5。但是,当我运行此函数时,它将生成一个介于1和10之间的单个随机数,并将其打印100倍,平均值等于生成的随机数

#include <iostream>
#include <cstdlib>
#include <ctime>

using namespace std;

float bs(){
        float random;
        srand(time(0));
        random = rand() % 10 + 1;

        return random;
}


int main(){

        float average;
        float random;

        for (int i = 1; i < 101; ++i)
        {
                random  += bs();
                cout << random << endl;
        }

        average = random/100;
        cout << average << endl;

        return 0;
}
#包括
#包括
#包括
使用名称空间std;
浮动bs(){
随机浮动;
srand(时间(0));
random=rand()%10+1;
返回随机;
}
int main(){
浮动平均;
随机浮动;
对于(int i=1;i<101;++i)
{
随机+=bs();

cout种子只能使用一次。移动

srand(time(0));
到主循环之前