隨機數的生成

隨機數常常在粒子系統中獲得使用;今天將之弄明白了;整理以下。函數

/*
本例主要說明隨機數的產生以及使用:
srand函數是隨機數發生器的初始化函數。原型:void srand(unsigned int seed);
srand和rand()配合使用產生僞隨機數序列。rand函數在產生隨機數前,須要系統提供的生成僞隨機數序列的種子,
rand根據這個種子的值產生一系列隨機數。若是系統提供的種子沒有變化,每次調用rand函數生成的僞隨機數序列都
是同樣的。srand(unsigned seed)經過參數seed改變系統提供的種子值,從而可使得每次調用rand函數生成的僞隨
序列不一樣,從而實現真正意義上的「隨機」。一般能夠利用系統時間來改變系統的種子值,即srand(time(NULL)),能夠
爲rand函數提供不一樣的種子值,進而產生不一樣的隨機數序列
這個隨機數種子也能夠選擇手動輸入
*/
/*
簡而言之,生成的數表面上看是隨機的,其實並不隨機;若不提供這個種子,則每次生成的值都是相同的;根據time()
提供的數字;則能夠看作是隨機的
*/學習

#include<stdio.h>
#include<stdlib.h>
#include<time.h>指針

int main(void)
{
int i, number;內存

srand(time(NULL));
for (i=0; i<50; i++)
{
number = rand()%101;
printf("%d \n", number);
}
return 0;
}原型

剛開始學習時;對代碼中的time(NULL)比較迷惑;順便也將它相關的內容放在這裏:io

/*
本例是關於time()這個函數一些說明
定義:time() 是指返回自 Unix 紀元(January 1 1970 00:00:00 GMT)起的當前時間的秒數的函數(即從1970年
起到當前時間的秒數)
函數原型:time_t time(time_t *t);
若是t是空指針,直接返回當前時間。若是t不是空指針,返回當前時間的同時,將返回值賦予t指向的內存空間。
*/
/*本程序主要用來獲取從1970年到現在的秒數,而且將這個數字換算爲當前時間(沒有年)*/
#include<stdio.h>
#include<stdlib.h>
#include<time.h>隨機數

#define Day (24*3600)
#define Hour 3600
#define Minute 60程序

int main(void)
{
time_t t;
int hour, minute, second;
long hms;
int ms;im

// t = time(NULL);//time()的參數爲空,返回當前時間
time (&t);//time()的參數不爲空,則首先返回當前時間,而且將這個秒數存放到&t這個內存中
printf("%ld \n", t);di

hms = t%Day;//(若t/Day,則獲得天數;若取餘,則獲得小時和分鐘和秒的總秒數)
hour = hms/Hour;
ms = hms%Hour;
minute = ms/Minute;
second = ms % Minute;
printf("%d : %d : %d", hour, minute, second);

return 0;
}

/*注意:本程序最後輸出的時間是標準時間;因爲咱們使用東8區的時間;所以,應該將程序中的時間加上8;便可獲得北京時間*/

將程序複製到VC下運行,你就會明白到底是怎麼一回事。

相關文章
相關標籤/搜索