回覆列表
-
1 # 說漫小遊
-
2 # shenyaocan222
用rand()/(double)(RAND_MAX); //產生0~1的浮點數
例:#include void main()
{
double a;
a= rand()/(double)(RAND_MAX);
printf("%lf\n",a);
}
若要0~10的浮點數,則修改為rand() /(double)(RAND_MAX/10); //多了/10
若要0~100浮點數,則修改為rand() /(double)(RAND_MAX/100) ......以此類推
執行你會發現結果總是一樣,因為這嚴格上只是偽隨機數(做平時練習的話,用這個應該可以了)
若是要求更嚴格準確的隨機數的話,用上srand 例:
#include void main()
{ double a;
srand((unsigned)time(NULL));
a= rand()/double(RAND_MAX);
printf("%lf\n",a);
}
這樣每次產生的隨機數是不同的
C語言中有很多的自帶函式,比如rand()%x這個函式就能產生0~x-1的隨機整數,當然應題主要求,我們要生成的是0~1之間的浮點數,但僅憑這個函式的功能的確無法生成我們想要的浮點隨機數,所以呢,在這裡我們就要運用一點小腦筋,我們就用四則運算生生地將那個整數變成浮點數,在這裡一些聰明的同學可能已經想到該怎麼辦了,也有一些經驗不足的同學可能還沒有反應過來,不怕,接下來我將會用例項告訴大家這麼獲得一個想要的隨機浮點數
我們先上基礎程式:
#include<stdio.h>
#include<stdlib.h>
void main()
{
float random; //定義一個浮點數變數
for(int i=0;i<5;i++) //生成5個隨機浮點數
{
random=(rand()%100000)*0.00001; //透過四則運算限定隨機數範圍以及小數點後有效位數
printf("%f\n",random);
}
}
關注了,關注了,一人只限一次,走過路過不要錯過!