簡體   English   中英

Rand()在C語言中不生成隨機變量

[英]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被設置。

如果只需要01 ,則應使用模:

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

rand生成的所有偶數將變為0 ,所有奇數將變為1

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM