[英]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.