gpt4 book ai didi

c - Rand() 不在 C 中生成随机变量

转载 作者:太空宇宙 更新时间:2023-11-04 04:21:08 24 4
gpt4 key购买 nike

我一直在尝试应用在该网站上找到的所有建议,但似乎都没有用。

对于代码的第一部分,我需要用随机数(0 或 1)填充一个数组来模拟流行病传播,但获得的数组根本不是我想要的......这是我写的代码:

#include <stdio.h>
#include <stdlib.h>
#include <time.h>

int main(int argc, char **argv)
{
int N, BC, t, T, i, v[N];
float b, g, p, r;

/*Variable values initialization*/
printf("Enter infection probability:\n");
scanf("%f", &b);

printf("Enter the number of individuals:\n");
scanf("%d", &N);

printf("Enter the number of time steps:\n");
scanf("%d", &T);

printf("Periodic boundary contitions? (Y:1 / N:0)\n");
scanf("%d", &BC);


/*First set of individuals*/
srand(time(NULL));
for(i = 0; i < N; i++){
v[i] = (rand()/RAND_MAX);
}

/*Check if array properly initialized*/
printf("Initial array:\n" );
for(i = 0; i < N; i++){
printf("%d-", v[i]);
}

我对数组的预期结果类似于:1-0-1-1-0-0-0-...,但我总是得到以下结果:

初始数组:0-0-2-15-0-0-0-0-0-0-

我做错了什么?

感谢一百万!

最佳答案

你应该在之后声明v[N]

printf("Enter the number of individuals:\n");
scanf("%d", &N);

否则它的大小将是随机的,因为在设置基于Nv[] 分配的内存时,N 不会被初始化。

如果您只需要 01,您应该使用模数:

srand(time(NULL));
for(i = 0; i < N; i++){
v[i] = (rand() % 2);
}

rand 生成的所有偶数都将变为0,所有奇数将变为1

关于c - Rand() 不在 C 中生成随机变量,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/46706774/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com