⑴ C語言如何編程產生隨機數
樓主你好,給你個最簡單的C程序
#include<stdio.h>
#include<stdlib.h>//這個是隨機數函數rand()所在頭文件,就像使用scanf要包含stdio.h。
voidmain()
{
inti=100;
while(i--)
{
printf("-------%d---",rand()%1000);
}
}
⑵ c語言產生隨機數的函數
在c語言中要產生隨機數可以用rand函數。
默認情況下這個函數產生的隨機整數的范圍是[0,RAND_MAX]。
RAND_MAX是一個預定義的宏,其值等於平台上int類型的最大值。
可以使用如下公式來產生一個[min,max]之間的隨機整數:
rand()%(max-min+1)+min
下面這個例子可以產生10個[1,100]的隨機數,並輸出了它們:
#include <stdio.h>
#include <stdlib.h>
#include <time.h>
int main()
{
int i;
//初始化隨機數種子
srand(time(NULL));
//printf("%d ",RAND_MAX);
for(i=0;i<10;i++)
printf("%d ",rand()%100+1);
return 0;
}
下面是運行結果的截圖:
⑶ 如何在C語言中生成一定范圍內的隨機數
srand((int)time(NULL));設定隨機數種子
rand()%100;產生0-99的隨機數。
高級點的,假如要產生16-59之間的數,你可以這樣寫:rand()%44+16(這里44由59-16+1得到)。其他情況如法炮製!
⑷ C語言隨機生成數字
for(int
i=0;i<=a長度;i++)
{
a[i]=random(100);/*得到0到100之間的隨機數,具體用法可以查一下隨機函數。相應的隨機函數還有randomize,srand,rand*/
}
⑸ C語言如何生成隨機數
在VC中設計到隨機數有兩個函數
srand()
and
rand()
srand()
的作用是是一個種子,提供每次獲得隨機數的基數而已,rand()根據種子而產生隨機數
注意
1:srand()
里的值必須是動態變化的,否則得到的隨機數就是一個固定數
2:其實可以不用寫srand()
,只用rand()就可以了,省事,簡單,例子如下
如果我們想得到一個
0-60的隨機數那麼可以寫成
int
i;
i=rand()%60;
就可以了。
當然最好有個統一的標注如下:
int
i;
srand((unsigned)time(
NULL
));
i=rand()%60;
這樣就OK了。
⑹ C語言抽取隨機數怎麼編寫
源程序代碼以及演算法解釋如下:
產生1-10隨機數程序:
#include <iostream>
#include <time.h>
using namespace std;
int main()
{
const int n = 10;//定義隨機數個數
int number[n] = { NULL };//定義隨機數存儲的數組
srand((unsigned)time(NULL));//初始化隨機函數
number[0] = rand() % n;//第一個隨機數無需比較
cout << number[0] << " ";
for (int i = 1; i < n; i++)//其餘隨機數循環產生
{
int j = 0;
number[i] = rand() % n;//產生隨機數
while (1)
{
if (number[i] == number[j])//若有相同則繼續循環重新安排隨機數
{
number[i] = rand() % n;//產生隨機數
j = 0;//若遇到相同的就從頭遍歷
continue;
}
if (j == (i - 1))//若遍歷完就跳出
break;
j++;
}
cout << number[i] << " ";
}
cout << endl;
return 0;
}
程序運行結果如下:
(6)c編程隨機數擴展閱讀:
利用vector進行隨機數輸出:
#include <iostream>
#include <vector>
#include <time.h>
using namespace std;
int main()
{
const int n = 10;
int randnum;
vector<int> number;
for (int i = 0; i < n; i++)
{
number.push_back(i + 1);//從尾部添加元素
cout << number[i] << " ";
}
cout << endl;
srand((unsigned)time(NULL));
for (int j = 0; j < n; j++)//其餘隨機數循環產生
{
randnum = rand() % (n - j);//rand函數生成的隨機數是0-(n-1)
cout << number.at(randnum) << " ";
number.erase(number.begin() + randnum);
}
cout << endl;
return 0;
}
⑺ C語言怎樣產生一定范圍的隨機數
編譯環境為:vs2013
產生1到3的整型隨機數的代碼如下:
#include<stdio.h>
#include<time.h>
#include<stdlib.h>
#define max 3 //這個函數的意義為:隨機生成最大的數為3
#define min 1 //這個函數的意義為:隨機生成最小的數為1
int main()
{
int num;
srand(time(0));
num = rand() % (max - min) + min; // 這里的意義,「%」為模運算
printf("隨機數為:%d
", num);
system("pause"); //這個代碼可以讓彈出的黑框不會一下就消失
return 0;
}
(7)c編程隨機數擴展閱讀:
根據密碼學原理,隨機數的隨機性檢驗可以分為三個標准:
條件一、統計學偽隨機性。統計學偽隨機性指的是在給定的隨機比特流樣本中,1的數量大致等於0的數量,同理,「10」「01」「00」「11」四者數量大致相等。類似的標准被稱為統計學隨機性。滿足這類要求的數字在人類「一眼看上去」是隨機的。
條件二、密碼學安全偽隨機性。其定義為,給定隨機樣本的一部分和隨機演算法,不能有效的演算出隨機樣本的剩餘部分。
條件三、真隨機性。其定義為隨機樣本不可重現。實際上只要給定邊界條件,真隨機數並不存在,可是如果產生一個真隨機數樣本的邊界條件十分復雜且難以捕捉(比如計算機當地的本底輻射波動值),可以認為用這個方法演算出來了真隨機數。
隨機數分為三類:
①偽隨機數:滿足第一個條件的隨機數。
②密碼學安全的偽隨機數:同時滿足前兩個條件的隨機數。可以通過密碼學安全偽隨機數生成器
計算得出。
③真隨機數:同時滿足三個條件的隨機數。
⑻ 如何用c語言產生一定范圍內的隨機數
利用srand((unsigned int)(time(NULL))是一種方法,因為每一次運行程序的時間是不同的。
在C語言里所提供的隨機數發生器的用法:現在的C編譯器都提供了一個基於ANSI標準的偽隨機數發生器函數,用來生成隨機數。它們就是rand()和srand()函數。這二個函數的工作過程如下:
1) 首先給srand()提供一個種子,它是一個unsigned int類型,其取值范圍從0~65535;
2) 然後調用rand(),它會根據提供給srand()的種子值返回一個隨機數(在0到32767之間)
3) 根據需要多次調用rand(),從而不間斷地得到新的隨機數;
4) 無論什麼時候,都可以給srand()提供一個新的種子,從而進一步「隨機化」rand()的輸出結果。
下面是0~32767之間的隨機數程序:
#include <stdlib.h>
#include <stdio.h>
#include <time.h> // 使用當前時鍾做種子
void main(void)
{int i;
srand((unsigned)time( NULL ) ); // 初始化隨機數
for(i = 0; i < 10;i++) // 列印出 10 個隨機數
printf("%d ", rand() );
}
根據上面的程序可以很容易得到0~1之間的隨機數:
#include <stdlib.h>
#include <stdio.h>
#include <time.h>
int main( )
{int i;
srand((unsigned)time( NULL ) );
for(i = 0; i < 10;i++)
printf("%5.2f ", rand()/32767.0);
}
而產生1~100之間的隨機數可以這樣寫:
#include <stdlib.h>
#include <stdio.h>
#include <time.h>
int main( )
{int i;
srand((unsigned)time( NULL ) );
for(i = 0; i < 10;i++)
printf("%d ", rand()%100+1);
}
(8)c編程隨機數擴展閱讀:
C語言高效編程技巧:
一:以空間換時間
計算機程序中最大的矛盾是空間和時間的矛盾,那麼,從這個角度出發逆向思維來考慮程序的效率問題
二:數學方法解決問題
數學是計算機之母,沒有數學的依據和基礎,就沒有計算機發展,所以在編寫程序的時候,採用一些數學方法會對程序的執行效率有數量級的提高。
三:使用位操作
實現高效的C語言編寫的第三招----使用位操作,減少除法和取模的運算。
在計算機程序中,數據的位是可以操作的最小數據單位,理論上可以用「位運算」來完成所有的運算和操作。一般的位操作是用來控制硬體的,或者做數據變換使用,但是,靈活的位操作可以有效提高程序運行的效率。
⑼ c語言,如何產生隨機數
1、第一步,先定義int一個數組和int一個指針變數。