簡體   English   中英

為什么從偽隨機數生成器中只有0.000000?

[英]Why only 0.000000 from psuedo-random number generator?

為什么rand_float僅返回值0.000000?

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

int main(int test, int numpoints, int numtrials, int dimension){

    //generate a random number
    float r = rand_float();

    //print it
    printf("%f", r);
    printf("\n");
}

//function generates a random float in [0,1]
int rand_float(){
    srand(time(NULL));
    return (float)rand()/RAND_MAX;
}

注意rand_float的返回類型是int

因此[0,1)值(在float中)被隱式轉換0 (一個int),這是該函數將返回的所有內容。

修復返回類型-通過將其從int更改為float

同樣,可以向前聲明rand_float函數,也可以將函數定義移至main函數的前面..並查看關於主問題的其他注釋。 啟用(並讀取)編譯器警告,以獲取有關[潛在]有問題的代碼的提示!

暫無
暫無

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

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