自动生成100个数据 c语言,用C语言随机函数生成100个不大于100的数的具体算法怎么写?...
http://blog.tianya.cn/blogger/post_show.asp?idWriter=0&Key=0&BlogID=382219&PostID=4547421
以上網有詳細的說明
/*已經上機通過測試:*/
#include
main()
{
int a[100],i; /*定義數組存放100個數*/
for(i=0;i<100;i++)
a[i]=random(100); /*產生100以內的數*/
for(i=0;i<100;i++)
printf("%d ",a[i]); /*打印輸入*/
getch();
}
在C語言函數庫中包含了一個產生隨機數的函數:
int rand( void );
在函數庫中對這個函數的說明是:
The rand function returns a pseudorandom integer in the range
0 to RAND_MAX. Use the srand function to seed the pseudorandom
-number generator before calling rand.
而在C語言函數庫中是這樣定義RAND_MAX的:
/* Maximum value returned by "rand" function
*/
#define RAND_MAX 0x7FFF
所以,函數int rand( void );返回的是一個界于0~32767(0x7FFF)之
間的偽隨機數,包括0和32767。注意,這里產生的是偽隨機數,不是真正意
義上的隨機數,看下面的程序:
#include "stdlib.h"
#include "stdio.h"
void main( void )
{
/* Display a number. */
printf( " %6d\n", rand() );
getchar();
}
程序運行的結果是:
346
多次運行這個程序,發現每次產生的結果都是346(不同的機器可能產生
的結果不一樣),這就是所謂的偽隨機數。偽隨機數是通過一個公式來運算
出來的,所以,每次產生的偽隨機數都一樣。那么,如何才能產生真正意義
上的隨機數呢?這就有一個隨機種子的問題。在C語言標準函數庫中,有這
么一個函數:
void srand( unsigned int seed );
在《The c programming language》中對這個函數是這樣描述的:
srand uses seed(函數變量聲明中的seed) as the seed(隨機函數中種子
的意思) for a new sequence of pseudo-random numbers. The
initial seed is 1.
所以,要產生真正意義上的隨機數,那么就要求每次提供的種子不一樣,一
般情況下,都設置時間為隨機函數的種子。看下面的一段程序:
/* RAND.C: This program seeds the random-number generator
* with the time, then displays 10 random integers.
*/
#include "stdlib.h"
#include "stdio.h"
#include "time.h"
void main( void )
{
int i;
/* Seed the random-number generator with current time so that
the numbers will be different every time we run.
將當前時間設置成隨機函數的種子,所以每次產生的數都不一樣
*/
srand( (unsigned)time( NULL ) );
/* Display 10 numbers. */
for( i = 0; i < 10;i++ )
printf( “ %6d\n”, rand() );
}
Output
6929
8026
21987
30734
20587
6699
22034
25051
7988
10104
每次運行這個程序,產生的隨機數都不一樣,這樣就達到了隨機數的要求了
總結
以上是生活随笔為你收集整理的自动生成100个数据 c语言,用C语言随机函数生成100个不大于100的数的具体算法怎么写?...的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 计算机专业调剂化学专业,汕头大学计算机化
- 下一篇: 职业选手的。cfg怎么用_靠演技出道,用