[英]Rand() not generating random variables in C
我一直在嘗試應用在此站點中找到的所有建議,但似乎沒有一個起作用。
對於代碼的第一部分,我需要使用隨機數(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);
否則其大小將是隨機的,因為N
當用於存儲器分配的未初始化v[]
基於N
被設置。
如果只需要0
或1
,則應使用模:
srand(time(NULL));
for(i = 0; i < N; i++){
v[i] = (rand() % 2);
}
rand
生成的所有偶數將變為0
,所有奇數將變為1
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.