c語言如何實(shí)現(xiàn)隨機(jī)數(shù)字的產(chǎn)生
C語言提供了一些庫函數(shù)來實(shí)現(xiàn)隨機(jī)數(shù)的產(chǎn)生。C語言中有三個通用的隨機(jī)數(shù)發(fā)生器,分別為
rand函數(shù),
random函數(shù),
randomize
函數(shù)
2.
但是rand函數(shù)產(chǎn)生的并不是真意正義上的隨機(jī)數(shù),是一個偽隨機(jī)數(shù),是根據(jù)一個數(shù),稱之為種子,為基準(zhǔn)以某個遞推公式推算出來的一系數(shù),當(dāng)這系列數(shù)很大的時(shí)候,就符合正態(tài)公布,從而相當(dāng)于產(chǎn)生了隨機(jī)數(shù),但這不是真正的隨機(jī)數(shù),當(dāng)計(jì)算機(jī)正常開機(jī)后,這個種子的值是定了的,除非破壞了系統(tǒng),為了改變這個種子的值,C提供了srand()函數(shù),它的原形是void
srand(
int
a)。
3.
在調(diào)用rand函數(shù)產(chǎn)生隨機(jī)數(shù)前,必須先利用srand()設(shè)好隨機(jī)數(shù)種子,如果未設(shè)隨機(jī)數(shù)種子,rand()在調(diào)用時(shí)會自動設(shè)隨機(jī)數(shù)種子為1。一般用for語句來設(shè)置種子的個數(shù)。
數(shù)學(xué)意義上的隨機(jī)數(shù)在計(jì)算機(jī)上已被證明不可能實(shí)現(xiàn)。通常的隨機(jī)數(shù)是使用隨機(jī)數(shù)發(fā)生器在一個有限大的線性空間里取一個數(shù)。“隨機(jī)”甚至不能保證數(shù)字的出現(xiàn)是無規(guī)律的。
我覺得你的程序邏輯似乎不對,看程序a的值應(yīng)該來自數(shù)組num[],假如在第一個for循環(huán)中生成的x值為1,第二次仍然生成1,程序?qū)⑾萑胨姥h(huán),又或者a是某個特定值,只是你應(yīng)該給出說明。
使用系統(tǒng)時(shí)間作為隨機(jī)數(shù)發(fā)生器是常見的選擇,參考下面的隨機(jī)輸出1個1~99數(shù)字的程序:
#include
#include
#include
int
main(void)
{
int
i;
time_t
t;
srand((unsigned)
time(&t));
printf("ten
random
numbers
from
0
to
99\n\n");
for(i=0;
i<10;
i++)
printf("%d\n",
rand()
%
100);
return
0;
}
c語言如何隨機(jī)取1個0~1之間的數(shù)字?
C語言中生成1個0到1的隨機(jī)數(shù)可以執(zhí)行語句:float b=rand()\/(RAND_MAX+1.0);解析:標(biāo)準(zhǔn)C庫中函數(shù)rand()可以生成0~RAND_MAX之間的一個隨機(jī)數(shù),其中RAND_MAX 是stdlib.h 中定義的一個整數(shù),它與系統(tǒng)有關(guān)。rand()函數(shù)沒有輸入?yún)?shù),直接通過表達(dá)式rand()來引用;用函數(shù)rand取得的隨機(jī)數(shù)除以(...
在java中產(chǎn)生隨機(jī)數(shù)
答案是肯定的。如現(xiàn)在程序要需要生成一個1-100范圍內(nèi)的偶數(shù)。此時(shí)該如何實(shí)現(xiàn)?首先,需要生成一個0到99之內(nèi)的隨機(jī)數(shù)(至于這里為什么是99,大家耐心看下去就知道原因了)。要實(shí)現(xiàn)這個需求,很簡單吧,只要通過如下語句就可以實(shí)現(xiàn): i=1+(int)(Math.Random()*100)。其中(int)(Math.Random()*99)產(chǎn)生0...
C語言產(chǎn)生隨機(jī)數(shù)方法
初始化“種子”后,如設(shè)為2,生成的“隨機(jī)數(shù)”變?yōu)?5,可見“隨機(jī)性”取決于“種子”值。為確保每次運(yùn)行結(jié)果不同,應(yīng)使用srand()函數(shù)設(shè)置“種子”,常用當(dāng)前時(shí)間作為參數(shù),以增加隨機(jī)性。使用模除與加法,C語言可生成特定區(qū)間的隨機(jī)數(shù)。程序運(yùn)行結(jié)果展示了一定的隨機(jī)性。示例應(yīng)用:生成10個[0,99]范圍...
java如何產(chǎn)生隨機(jī)數(shù)
java產(chǎn)生隨機(jī)數(shù)的方法:在j2se里我們可以使用Math.random()方法來產(chǎn)生一個隨機(jī)bai數(shù),這個產(chǎn)生的隨機(jī)數(shù)是0-1之間的一個double,我們可以把他乘以一定的數(shù),比如說乘以100,他就是個100以內(nèi)的隨機(jī),這個在j2me中沒有。Java:Java是一門面向?qū)ο缶幊陶Z言,不僅吸收了C++語言的各種優(yōu)點(diǎn),還摒棄了C++里難以...
C語言怎樣產(chǎn)生一定范圍的隨機(jī)數(shù)?
為基準(zhǔn)以某個遞推公式推算出來的一系數(shù),當(dāng)這系列數(shù)很大的時(shí)候,就符合正態(tài)公布,從而相當(dāng)于產(chǎn)生了隨機(jī)數(shù)。C語言產(chǎn)生一定范圍的隨機(jī)數(shù)的源代碼如下:include<stdio.h> include<stdlib.h> int main(){ int i;for(i=0; i<10; i++) \/\/隨機(jī)產(chǎn)生10個數(shù)。{ printf("%d\\n", rand());} return...
c語言,如何產(chǎn)生隨機(jī)數(shù)?
本文由青松原創(chuàng)并依GPL-V2及其后續(xù)版本發(fā)放,轉(zhuǎn)載請注明出處且應(yīng)包含本行聲明。\\x0d\\x0a\\x0d\\x0aC++中常用rand()函數(shù)生成隨機(jī)數(shù),但嚴(yán)格意義上來講生成的只是偽隨機(jī)數(shù)(pseudo-random integral number)。生成隨機(jī)數(shù)時(shí)需要我們指定一個種子,如果在程序內(nèi)循環(huán),那么下一次生成隨機(jī)數(shù)時(shí)調(diào)用上一次的...
c語言,產(chǎn)生隨機(jī)數(shù)
如果需要的隨機(jī)數(shù)范圍超過了32767,可以用rand()*rand()來產(chǎn)生,舉例如下:產(chǎn)生0~32767范圍內(nèi)的隨機(jī)數(shù):int num = rand();產(chǎn)生0-20范圍內(nèi)的隨機(jī)數(shù):int num = rand()%20;產(chǎn)生0~10000000范圍內(nèi)的隨機(jī)數(shù):int num = rand()*rand()%10000000;注:需要包含頭文件<stdlib.h> ...
C語言 隨機(jī)產(chǎn)生1~10之間的數(shù)字 如何實(shí)現(xiàn)??
include<stdio.h> include<stdlib.h> include include<conio.h> main(){ int i, j, temp, KEY[10];srand((unsigned)time(NULL));KEY[0] = rand()%10;for(i=1;i<10;i++){ while(1){ temp = rand()%10;for(j=0;j<i;j++){ if(KEY[j]==temp)break;} if(j==i){ KEY[...
C語言編程中生成隨機(jī)數(shù)的初級教程
如果調(diào)用srand(seed)產(chǎn)生的隨機(jī)數(shù)種子是一樣的.話(即seed的值相同),rand()產(chǎn)生的隨機(jī)數(shù)也相同。所以,如果希望rand()每次調(diào)用產(chǎn)生的值都不一樣,就需要每次調(diào)用srand(seed)一次,而且seed不能相同。這里就是經(jīng)常采用time(NULL)產(chǎn)生隨機(jī)數(shù)種子的原因。C語言中可以使用rand()函數(shù)來生成一個從0到RAND_...
c語言中如何隨機(jī)生成一個 1 到 2千萬 的數(shù)
1 C語言產(chǎn)生隨機(jī)數(shù)函數(shù)。rand(); 頭文件為stdlib.h 2 產(chǎn)生[m,n]范圍內(nèi)隨機(jī)數(shù)的語句: rand()%(n-m+1)+m 3 要產(chǎn)生不同隨機(jī)數(shù)范圍的方法:將已獲取的隨機(jī)數(shù)保存下來,在產(chǎn)生新的隨機(jī)數(shù)后,與已獲取到的進(jìn)行比較,如果存在則拋棄,否則保存。于是,獲取到最小為m,最大為n,總數(shù)為k個的不...
相關(guān)評說:
平定縣慣性: ______ 先使用srand函數(shù)以當(dāng)前時(shí)間做一個種子,然后再隨機(jī) 如:#include //用到了time函數(shù)#include #include int main() { int i, number; srand((unsigned int) time(NULL)); //用時(shí)間做種,每次產(chǎn)生隨機(jī)數(shù)不一樣 for (i=0; i { number = rand() % 12 + 1;//產(chǎn)生1-13的隨機(jī)數(shù) printf("%d\n", number); } return 0; }
平定縣慣性: ______ srand(int)來設(shè)種子,然后每次rand()返回一個隨機(jī)數(shù).注意要包含#include 頭文件,因?yàn)橛玫搅藄rand函數(shù)#include //用到了time函數(shù) int main() { srand((unsigned) time(NULL)); //用時(shí)間做種,每次產(chǎn)生隨機(jī)數(shù)不一樣 for (int i=0; i<10; i++) { int number = rand() % 12 + 1; //產(chǎn)生1-13的隨機(jī)數(shù) printf("%d\n", number); } return 0; }
平定縣慣性: ______ 調(diào)用stdlib頭文件 如下:#include<stdlib.h>......void main() { int a; a=rand()%16+85; .......} 就可以了
平定縣慣性: ______ 用多個隨機(jī)數(shù),每個代表不同的位置,比如你這個可以產(chǎn)生3個單字節(jié)數(shù),高字節(jié)加以限制,中字節(jié),低字節(jié)在0-256內(nèi)隨機(jī)...或者用5個10以內(nèi)隨機(jī)數(shù)不就完了...
平定縣慣性: ______ 1. C語言中有三個通用的隨機(jī)數(shù)發(fā)生器,分別為 rand函數(shù), random函數(shù), randomize 函數(shù) 2. 但是rand函數(shù)產(chǎn)生的并不是真意正義上的隨機(jī)數(shù),是一個偽隨機(jī)數(shù),是根據(jù)一個數(shù),我們可以稱它為種子,為基準(zhǔn)以某個遞推公式推算出來的一系數(shù),...
平定縣慣性: ______ 1 C語言產(chǎn)生隨機(jī)數(shù)函數(shù).rand(); 頭文件為stdlib.h 2 產(chǎn)生[m,n]范圍內(nèi)隨機(jī)數(shù)的語句: rand()%(n-m+1)+m 3 要產(chǎn)生不同隨機(jī)數(shù)范圍的方法: 將已獲取的隨機(jī)數(shù)保存下來,在產(chǎn)生新的隨機(jī)數(shù)后,與已獲取到的進(jìn)行比較,如果存在則拋棄,否則...
平定縣慣性: ______ #include "stdlib.h"#include "time.h" srand(time(NULL));//這句提供種子,使每次產(chǎn)生的隨即數(shù)不同,可以不用,這個函數(shù)需要一個參數(shù),通常用time(NULL) int a=rand()%100
平定縣慣性: ______ 樓上的有問題,很可能相當(dāng)長的時(shí)間才能完成一次隨機(jī),運(yùn)氣不好一天都完不成一次/* 我自己想的一個方法:1,數(shù)組flag[48],表示48個數(shù)是否被選中,初始化為0,表示未被選中.2,srand(),rand()得到一個隨機(jī)數(shù)m.3,然后得到我們需要的隨...
平定縣慣性: ______ /*********************** 作者:dongyu 功能:生成隨機(jī)數(shù) ***********************/ #include <stdio.h> #include <conio.h> main() { int i,n,sum=0,mark=1; srand(time(NULL));//設(shè)置隨機(jī)種子 while(mark==1)//如超出隨機(jī)數(shù)總和的范圍,則重新生成隨機(jī)數(shù) { ...
平定縣慣性: ______ C語言生成的的偽隨機(jī)數(shù)的函數(shù)rand()包含于time.h庫函數(shù) 具體例子如下: #include<time.h> #include<stdio.h> int main() { int i; srand((unsigned)time(NULL)); // 初始化種子,保證每次隨機(jī)得到的數(shù)字不一樣 for(i = 0; i < 10; i++) { printf("%d",rand()%100); } }