① 如何用C語言產生1~35之間的7個不同隨機數(在VC++6.0里編譯),非常感謝!
代碼如下:
#include <stdio.h>
#include <stdlib.h>
#include <time.h>
// 產生一個 min ~ max 之間的數,包含 min, max
int rand(int min, int max)
{
return rand() % (max - min + 1) + min;
}
int main()
{
srand((unsigned int)time(NULL));
/岩帶空/ 定義一個數組,存放產生的7個行型隨機數
int numbers[7];
for (int i = 0; i < 7; i++)
numbers[i] = rand(1, 35);
// 輸出
for (int i = 0; i < 7; i++)
printf("粗瞎%d ", numbers[i]);
printf("\n");
system("pause");
return 0;
}
② 鐢╟#緙栬瘧涓涓浠0-9闅忔満閫変竴涓鏁板瓧浠g爜鍜屽叧閿浠g爜錛涙眰楂樻墜鎸囩偣
/// <summary>
/// 浜х敓闅忔満鏁板瓧鐨勬暟緇
/// </summary>
/// <param name="num">涓鏁</param>
/// <param name="minValue">璧峰嬪</param>
/// <param name="maxValue">鏈澶у</param>
/// <returns></returns>
public int[] getRandomNum(int num, int minValue, int maxValue)
{
//浣跨敤緋葷粺鏃墮棿浣滀負闅忔満縐嶅瓙
Random ra = new Random(unchecked((int)DateTime.Now.Ticks));
int[] arrNum = new int[num];
int tmp = 0;
bool notRepeat;
for (int i = 0; i <= num - 1; )
{
tmp = ra.Next(minValue, maxValue); //闅忔満鍙栨暟
notRepeat = true;
for (int j = 0; j < i; j++)
if (tmp == arrNum[j])
{
notRepeat = false;
break;
}
if (notRepeat) arrNum[i++] = tmp;
}
return arrNum;
}
protected void Button1_Click(object sender, EventArgs e)
{
int[] result = getRandomNum(7, 0, 9);
string temp = "";
for (int i = 0; i < result.Length; i++)
{
temp += result[i].ToString() + " ";
}
TextBox1.Text = temp;
}
③ c語言,如何產生隨機數
具體代碼如下:
#include <stdio.h>
#include <stdlib.h>
#include <time.h> //用到了time函數
int main()
{ int i,number;
srand((unsigned) time(NULL)); //用時間做種,每次產生隨機數不一樣
for (i=0; i<50; i++)
{
number = rand() % 101; //產生0-100的隨機數
printf("%d ", number);
}
return 0;
}
有以下幾種情況:
(1) 如果你只要產生隨機數而不需要設定范圍的話,你只要用rand()就可以了:rand()會返回一隨機數值, 范圍在0至RAND_MAX 間。RAND_MAX定義在stdlib.h, 其值為2147483647。
(2) 如果你要隨機生成一個在一定范圍的數,你可以在宏定義中定義一個random(int number)函數,然後在main()裡面直接調用random()函數:
例如:
rand()%100是產生0-99的隨機數。
(3)但是上面兩個例子所生成的隨機數都只能是一次性的,如果你第二次運行的時候輸出結果仍和第一次一樣。這與srand()函數有關。srand()用來設置rand()產生隨機數時的隨機數種子。在調用rand()函數產生隨機數前,必須先利用srand()設好隨機數種子(seed), 如果未設隨機數種子, rand()在調用時會自動設隨機數種子為1。上面的兩個例子就是因為沒有設置隨機數種子,每次隨機數種子都自動設成相同值1 ,進而導致rand()所產生的隨機數值都一樣。
srand()函數定義 : void srand (unsigned int seed);
通常可以利用geypid()或time(0)的返回值來當做seed。如果你用time(0)的話,要加入頭文件#include<time.h>
④ C璇璦濡備綍緙栫▼浜х敓闅忔満鏁幫紵
1銆侀栧厛鎵撳紑Visual stdio 2019錛屼緷嬈$偣鍑繪枃浠訛紝鏂板緩錛岄」鐩鏂板緩浠ヤ竴涓絀虹櫧鐨勯」鐩錛
⑤ 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;
}
(5)隨機編譯完整版擴展閱讀:
根據密碼學原理,隨機數的隨機性檢驗可以分為三個標准:
條件一、統計學偽隨機性。統計學偽隨機性指的是在給定的隨機比特流樣本中,1的數量大致等於0的數量,同理,「10」「01」「00」「11」四者數量大致相等。類似的標准被稱為統計學隨機性。滿足這類要求的數字在人類「一眼看上去」是隨機的。
條件二、密碼學安全偽隨機性。其定義為,給定隨機樣本的一部分和隨機演算法,不能有效的演算出隨機樣本的剩餘部分。
條件三、真隨機性。其定義為隨機樣本不可重現。實際上只要給定邊界條件,真隨機數並不存在,可是如果產生一個真隨機數樣本的邊界條件十分復雜且難以捕捉(比如計算機當地的本底輻射波動值),可以認為用這個方法演算出來了真隨機數。
隨機數分為三類:
①偽隨機數:滿足第一個條件的隨機數。
②密碼學安全的偽隨機數:同時滿足前兩個條件的隨機數。可以通過密碼學安全偽隨機數生成器
計算得出。
③真隨機數:同時滿足三個條件的隨機數。