1. c語言,如何產生隨機數
1、第一步,先定義int一個數組和int一個指針變數。
2. 如何用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);
}
(2)c語言隨機數程序擴展閱讀:
C語言高效編程技巧:
一:以空間換時間
計算機程序中最大的矛盾是空間和時間的矛盾,那麼,從這個角度出發逆向思維來考慮程序的效率問題
二:數學方法解決問題
數學是計算機之母,沒有數學的依據和基礎,就沒有計算機發展,所以在編寫程序的時候,採用一些數學方法會對程序的執行效率有數量級的提高。
三:使用位操作
實現高效的C語言編寫的第三招----使用位操作,減少除法和取模的運算。
在計算機程序中,數據的位是可以操作的最小數據單位,理論上可以用「位運算」來完成所有的運算和操作。一般的位操作是用來控制硬體的,或者做數據變換使用,但是,靈活的位操作可以有效提高程序運行的效率。
3. 如何用C語言編一個取隨機數的程序
#include
<stdio.h>
#include<stdlib.h>
#include<time.h>
main()
{
int
a;
srand(time(0));
a=rand()%100+1;/*這個a的值就是你要的隨機整數,100表示生成數的范圍,可自己改,要生成多個的話只要用循環就行了*/
printf("%d\n",a);
}
4. 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;
}
程序運行結果如下:
(4)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;
}
5. 如何用C語言 寫一個隨機數生成器的程序
#include
<stdio.h>
#include
<time.h>
void
main()
{
int
iNum
=
0;
srand((unsigned)time(0));
iNum
=
rand()
%
100
+
1;
//隨機生成一個數,並對100取余,使它小於100(0~99)。再加1(1~100)
printf("%d\n",
iNum);
\\列印出來這個數
return;
}
如果想多生成幾個隨機數,可以有一個數組存儲,並用for循環實現隨機生成
int
aiNum[10]
=
{0};
int
iLoop
=
0;
//隨機生成10個數
for
(
iLoop
=
0;
iLoop
<
10;
iLoop++
)
{
aiNum[iLoop]
=
rand()
%
100
+
1;
}
6. 如何製作隨機數 C語言……
首先使用srand(unsigned
int)
函數
設置種子,然後使用rand()返回一個
隨機數
。
使用這兩個函數時需要包含頭文件
#include <stdlib.h>
1、在標準的C庫中函數rand()可以生成0~RAND_MAX之間的一個隨機數,其中RAND_MAX
是stdlib.h
中定義的一個
整數
,它與系統有關;
2、因為rand()函數是按指定的
順序
來產生整數,因此每次執行上面的
語句
都列印相同的兩個值,所以說C語言的隨機並不是真正意義上的隨機,有時候也叫偽隨機數;
3、通常通過為隨機數
生成器
提供一個新的
隨機種子
來達到使
程序
在每次執行時都能生成一個新
序列
的隨機值的效果。函數
srand()(來自stdlib.h)可以為隨機數生成器播散種子。只要種子不同rand()函數就會產生不同的隨機數序列。srand()稱為隨機數生成器的初始化器;
示例代碼:
#include <time.h> //用到了time函數
#include <stdlib.h>
#include <stdio.h>
int main()
{
int i, number;
srand((unsigned int) time(NULL)); //用時間做種,每次產生隨機數不一樣
for (i=0; i<10; i++)//產生10個隨機數
{
number = rand() % 12 + 1;//產生1-13的隨機數
printf("%d\n", number);
}
return 0;
}
7. 用c語言出一個隨機數,怎麼編
你說產生一個隨即數,還是產生很多隨即數,然後排序?然後還要查找?查找什麼數?題目說清楚ok?
產生50個隨即數,然後排序可以辦到,那麼查找顯示出什麼數?
根據你的要求題意,程序如下,運行正常。
#include<stdio.h>
#include<stdlib.h>
#include<time.h>
main()
{
int
a[50];
int
i,j,k,temp,n;
srand(time(0));
/*
設置種子
*/
for(i=0;i<50;i++)
a[i]=rand();
/*
隨機產生50個數
*/
for(i=0;i<49;i++)
/*
排序
*/
{
k=i;
for(j=i+1;j<50;j++)
if(a[j]<a[k])k=j;
temp=a[k];
a[k]=a[i];
a[i]=temp;
}
printf("50個隨機數經排序後為:\n");
for(i=0;i<50;i++)
printf("%d,",a[i]);
printf("\n");
printf("請在這50個數中指定一個數:\n");
scanf("%d",&n);
for(i=0;i<50;i++)
if(a[i]==n)break;
printf("這個數是第%d個元素\n",i+1);
getch();
}
另外,站長團上有產品團購,便宜有保證
8. 簡單C語言程序隨機函數程序
前邊輸入自己搞定
假設前邊輸入了
n
個數字
到array數組中(數組可以定義大一點)
int
pR[6];
for(int
k=0;k<6;k++)
{
pR[k]=rand()%n;//用隨即函數生成
0到(n-1)之間的數字
for(b=0;b<k;b++)//循環前邊已經生成的隨即數字
判斷是否與當前生成的數字有重復的
{
if(pR[b]==pR[k])
{
k--;//
k自減
1
當前生成的隨即數作廢
從新循環
break;
}
}
}
for(int
i=0;i<6;i++)//根據剛才生成的隨機數
將對應位置的數據輸出
{
printf("%d\n",array[pR[i]]);
}
9. C語言寫一個兩位的隨機數程序
這是2樓的,方法非常正確。
兩位數:也就是10~99了
這里可以用生成隨機數取余的方法得到,
比如任何整數除以100取余,那得到的是0~99的數,
那怎麼得到10~99呢?
任何整數除以90取余,那得到的是0~89的數,再加上10,也就是得到10~99的數了
#include
<stdlib.h>
#include
<stdio.h>
#include
<time.h>
void
main(
void
)
{
int
i,k;
srand(
(unsigned)time(
NULL
)
);
for(
i
=
0;
i
<
10;i++
)
{
k=rand()%90+10;
//這就OK了
printf(
"
k=%d\n",
k
);
}
}
10. C語言怎樣產生一定范圍的隨機數
在C語言中,rand()函數可以用來產生隨機數,但是這不是真真意義上的隨機數,是一個偽隨機數,是根據一個數,可以稱它為種子。
為基準以某個遞推公式推算出來的一系數,當這系列數很大的時候,就符合正態公布,從而相當於產生了隨機數。
C語言產生一定范圍的隨機數的源代碼如下:
#include<stdio.h>
#include<stdlib.h>
int main()
{
int i;
for(i=0; i<10; i++) //隨機產生10個數。
{
printf("%d ", rand());
}
return 0;
}
(10)c語言隨機數程序擴展閱讀
1、如果要隨機生成一個在一定范圍的數,你可以在宏定義中定義一個random(int number)函數,然後在main()裡面直接調用random()函數。
2、在對rand()的前三次調用中,並且此後得到的返回值仍然是在對rand()的第一批調用中所得到的其餘的返回值。因此,只有再次給srand()提供一個隨機的「種子」值,才能再次得到一個隨機數。