新聞中心
c語言用rand()取隨機數(shù)能不能取的是小數(shù)???
rand()是生成一個從0到RAND_MAX的隨機數(shù),所以要生成小數(shù),除以RAND_MAX就一定是一個小數(shù):

成都創(chuàng)新互聯(lián)公司-專業(yè)網(wǎng)站定制、快速模板網(wǎng)站建設(shè)、高性價比劍川網(wǎng)站開發(fā)、企業(yè)建站全套包干低至880元,成熟完善的模板庫,直接使用。一站式劍川網(wǎng)站制作公司更省心,省錢,快速模板網(wǎng)站建設(shè)找我們,業(yè)務(wù)覆蓋劍川地區(qū)。費用合理售后完善,十年實體公司更值得信賴。
(double)rand()/RAND_MAX
什么叫隨機數(shù)?就是不確定的數(shù),不過這個表達(dá)式,可以肯定的是從0到1的小數(shù)。
C語言產(chǎn)生1~10隨機小數(shù)
//---------------------------------------------------------------------------
#include stdio.h
#include stdlib.h
#include time.h
double rnd(void)
{
static int fg=1;
int rd;
if (fg) {
srand(time(NULL));
fg=0;
}
return (double)(rand()%900+100)/100;
}
int main(void)
{
int i;
for (i = 0; i 10; i++) //輸出10個[1.00,10.00]區(qū)間內(nèi)的小數(shù)
printf("%.2f\n",rnd());
return 0;
}
//---------------------------------------------------------------------------
//---------------------------------------------------------------------------
c語言中如何生成1個0到1的隨機數(shù)
C語言中生成1個0到1的隨機數(shù)可以執(zhí)行語句:float b=rand()/(RAND_MAX+1.0);
解析:
標(biāo)準(zhǔn)C庫中函數(shù)rand()可以生成0~RAND_MAX之間的一個隨機數(shù),其中RAND_MAX 是stdlib.h 中定義的一個整數(shù),它與系統(tǒng)有關(guān)。rand()函數(shù)沒有輸入?yún)?shù),直接通過表達(dá)式rand()來引用;
用函數(shù)rand取得的隨機數(shù)除以(RAND_MAX+1.0),即可確保得到的結(jié)果在0到1之間。ISO IEC 9899 2011 (C11)標(biāo)準(zhǔn)中未規(guī)定 RAND_MAX 的具體數(shù)值。但該標(biāo)準(zhǔn)規(guī)定了RAND_MAX 的值應(yīng)至少為32767。編程的時候,不應(yīng)該對 RAND_MAX 的具體數(shù)值做任何假設(shè)。
擴展資料:
相關(guān)說明:
1、因為rand()函數(shù)是按指定的順序來產(chǎn)生整數(shù),因此每次執(zhí)行上面的語句都打印相同的兩個值,所以說C語言的隨機并不是真正意義上的隨機。
2、為了使程序在每次執(zhí)行時都能生成一個新序列的隨機值,我們通常通過為隨機數(shù)生成器提供一粒新的隨機種子。函數(shù) srand()(來自stdlib.h)可以為隨機數(shù)生成器播散種子。只要種子不同rand()函數(shù)就會產(chǎn)生不同的隨機數(shù)序列。srand()稱為隨機數(shù)生成器的初始化器。
3、隨機種子(Random Seed)是計算機專業(yè)術(shù)語,一種以隨機數(shù)作為對象的以真隨機數(shù)(種子)為初始條件的隨機數(shù)。一般計算機的隨機數(shù)都是偽隨機數(shù),以一個真隨機數(shù)(種子)作為初始條件,然后用一定的算法不停迭代產(chǎn)生隨機數(shù)。
參考資料來源:百度百科-隨機函數(shù)
參考資料來源:百度百科-RAND_MAX
如何c語言中隨機產(chǎn)生1-50的隨機數(shù),包括小數(shù)?
VC環(huán)境下要比TC麻煩一些
格式如下:
#include "time.h"
#include "stdlib.h"
#include "stdio.h"
void main()
{
double x;
srand((unsigned)time(0)); //根據(jù)時間來產(chǎn)生隨機數(shù)種子
x=(double)rand()/RAND_MAX*49+1.0;//(double)rand()/RAND_MAX產(chǎn)生0到1之間的隨機數(shù),乘以49,加上1.0就是1到50的隨機數(shù)。
printf("%lf",x);
}
c語言產(chǎn)生一個隨機無限不循環(huán)小數(shù)
"無限不循環(huán)小數(shù)"的標(biāo)準(zhǔn)是啥?計算機和手工書寫都是有確定長度的,不可能是無限的;“無限”在數(shù)學(xué)上只是一種對趨勢的推理,而用一個稱號來表示這種推理和趨勢。用C產(chǎn)生的偽隨機數(shù)可以做到“無限不循環(huán)”,但顯示出來肯定就有限制而被截斷了。一個被截斷了的數(shù)字,誰又能肯定它一定是“無限不循環(huán)”的呢?
如何用c語言取0-1間的隨機小數(shù)??
可以寫一個函數(shù),利用math.h中的rand來產(chǎn)生隨機浮點數(shù)。
#include stdlib.h
#include stdio.h
#include math.h
// 精度0.001的隨機浮點數(shù)
float randf()
{
return (float)(rand() % 1001) * 0.001f;
}
main()
{
int i;
for (i=0; i100; ++i) printf("%.3f\n", randf());
system("pause");
}
VC里rand()的范圍是從0到某個內(nèi)部指定的極大數(shù),但是以前似乎有些書上說用rand得到的可能是負(fù)數(shù)。如果有出現(xiàn)負(fù)數(shù)的話,對rand得到的數(shù)取絕對值就可以了。
當(dāng)前文章:c語言隨機函數(shù)產(chǎn)生小數(shù) 隨機函數(shù)生成小數(shù)
本文網(wǎng)址:http://www.dlmjj.cn/article/doooisi.html


咨詢
建站咨詢
