国产 无码 综合区,色欲AV无码国产永久播放,无码天堂亚洲国产AV,国产日韩欧美女同一区二区

C語言隨機數生成和范圍設置詳解【超詳細教程】

這篇具有很好參考價值的文章主要介紹了C語言隨機數生成和范圍設置詳解【超詳細教程】。希望對大家有所幫助。如果存在錯誤或未考慮完全的地方,請大家不吝賜教,您也可以點擊"舉報違法"按鈕提交疑問。

博主將會這篇文章介紹c語言如何生成隨機數以及設置隨機數的范圍。創(chuàng)作不易請大家點點贊,點點關注。

一、隨機數的生成

1.rand函數

C語言提供了?個函數叫 rand,這函數是可以生成隨機數的,函數原型如下所示:

1 int rand (void);

  1. rand函數會返回?個偽隨機數,這個隨機數的范圍是在0~RAND_MAX之間,這個RAND_MAX的大小是依賴編譯器上實現的,但是大部分編譯器上是32767。

  2. rand函數的使用需要包含?個頭文件是:stdlib.h

那我們可以測試?下rand函數,這里多調用幾次,產生5個隨機數:

#include <stdio.h>#include <stdlib.h>int main(){
	printf("%d\n", rand());
	printf("%d\n", rand());
	printf("%d\n", rand());
	printf("%d\n", rand());
	printf("%d\n", rand());
	return 0;}

我們可以多運行幾次,可以發(fā)現:
C語言,C語言隨機數生成,C語言隨機數范圍
C語言,C語言隨機數生成,C語言隨機數范圍

  1. 我們會發(fā)現一次運行中產生的5個數字是相對隨機的,下一次運行程序生成的結果會和上一次一模?樣。

  2. 如果再深入了解?下,我們就不難發(fā)現,其實rand函數生成的隨機數是偽隨數,偽隨機數不是真正的隨機數,是通過某種算法生成的隨機數。真正的隨機數的是無法預測下?個值是多少的。而rand函數是對?個叫“種子”的基準值進行運算生成的隨機數。

  3. 之所以前面每次運行程序產生物的隨機數序列是?樣的,那是因為rand函數生成隨機數的默認種子是1。如果要生成不同的隨機數,就要讓種子是變化的。


2.srand函數

C語言中又提供了?個函數叫 srand,用來初始化隨機數的生成器的,srand的原型如下:

void srand (unsigned int seed);

  1. 程序中在調用 rand 函數之前先調用 srand 函數,通過 srand 函數的參數seed來設置rand函數生成隨機數的時候的種子,只要種子在變化,每次生成的隨機數序列也就變化起來了。

  2. 那也就是說給srand的種子是如果是隨機的,rand就能生成隨機數;在生成隨機種子的時候又需要?個隨機數,這就矛盾了。


3.time函數

在程序中我們?般是使用程序運行的時間作為種子的,因為時間時刻在發(fā)生變化的。 在C語言中有?個函數叫 time ,就可以獲得這個時間,time函數原型如下:

time_t time (time_t* timer);

  1. time
    函數會返回當前的日歷時間,其實返回的是1970年1月1日0時0分0秒到現在程序運行時間之間的差值,單位是秒。返回的類型是time_t類型的,time_t 類型本質上其實就是32位或者64位的整型類型。

  2. time函數的參數 timer 如果是非NULL的指針的話,函數也會將這個返回的差值放在timer指向的內存中帶回去。

  3. 如果timer 是NULL,就只返回這個時間的差值。time函數返回的這個時間差也被叫做:時間戳。

  4. time函數的時候需要包含頭文件:time.h

  5. 如果只是讓time函數返回時間戳,我們就可以這樣寫:

time(NULL);//調用time函數返回時間戳,這里沒有接收返回值


4.生成隨機數的代碼如下:

那樣我們就能把隨機數的代碼改寫成下面這樣:

#include <stdio.h>#include <stdlib.h>#include <time.h>int main(){
	//使?time函數的返回值設置種?
	//因為srand的參數是unsigned int類型,我們將time函數的返回值強制類型轉換
	srand((unsigned int)time(NULL));
	printf("%d\n", rand());
	printf("%d\n", rand());
	printf("%d\n", rand());
	printf("%d\n", rand());
	printf("%d\n", rand());
	return 0;}

多運行幾次,會發(fā)現每次的結果就會有所差異。
C語言,C語言隨機數生成,C語言隨機數范圍

C語言,C語言隨機數生成,C語言隨機數范圍
而且srand函數是不需要頻繁調用的,一次運行的程序中調用一次就夠了。


二、設置隨機數的范圍

如果我們要生成0~99之間的隨機數,方法如下:

rand() %100;
余數的范圍是0~99

如果要生成1~100之間的隨機數,方法如下:

rand()%100+1;
%100的余數是0~ 99,0~ 99的數字+1,范圍是1~100

同理可得要生成100~200的隨機數,方法如下:

100 + rand()%(200-100+1)
余數的范圍是0~ 100,加100后就是100~200

綜上所述,生成a~b范圍的公式為:

a + rand()%(b-a+1)

總結

本文主要介紹了rand函數、srand函數、以及time函數和時間戳的概念和如何控制隨機數的范圍。下一篇文章將介紹利用隨機數和循環(huán)來寫一個猜數字游戲。新人博主創(chuàng)作不易,希望大家動動小手點點贊和關注。文章來源地址http://www.zghlxwxcb.cn/news/detail-753071.html

到了這里,關于C語言隨機數生成和范圍設置詳解【超詳細教程】的文章就介紹完了。如果您還想了解更多內容,請在右上角搜索TOY模板網以前的文章或繼續(xù)瀏覽下面的相關文章,希望大家以后多多支持TOY模板網!

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。如若轉載,請注明出處: 如若內容造成侵權/違法違規(guī)/事實不符,請點擊違法舉報進行投訴反饋,一經查實,立即刪除!

領支付寶紅包贊助服務器費用

相關文章

  • 生成隨機數——C語言

    在C語言中,可以使用標準庫函數 rand() 來生成隨機數。需要注意的是, rand() 函數生成的是偽隨機數,具體的隨機序列取決于種子(seed)的值。 下面是一個簡單的示例代碼,展示如何在C語言中生成隨機數: 在上述代碼中,首先包含了 stdio.h 、 stdlib.h 和 time.h 頭文件來使用相

    2024年02月12日
    瀏覽(31)
  • C語言中生成隨機數的方法

    C語言中生成隨機數的方法

    ??生成隨機數是指按照一定的規(guī)律,產生一些看似無規(guī)律的數字序列。在計算機中,通常使用隨機數生成器來生成隨機數。隨機數生成器可以分為真隨機數生成器和偽隨機數生成器兩種。真隨機數生成器是利用物理現象產生的隨機事件(如放射性衰變)來生成隨機數。而偽

    2024年02月05日
    瀏覽(19)
  • 利用隨機數生成猜數字游戲【C語言】

    利用隨機數生成猜數字游戲【C語言】

    自動生成隨機數的范圍:0-99 玩家猜數字,猜數字的過程中,根據猜測數據的大小給出大了或小了的反饋,直到猜對,游戲結束 根據游戲要求,第一步就是 先生成隨機數 ,這里我們主要利用到三種函數 rand 、 srand 、 time 函數。所以下面依次介紹這三種函數。 我們來看一段代

    2024年02月10日
    瀏覽(25)
  • C語言生成隨機數【簡易抽卡代碼為例】

    C語言生成隨機數【簡易抽卡代碼為例】

    本文將詳細解釋如何在C語言中生成隨機數,并介紹應用的小技巧 c語言生成一個真正的隨機數需要用到三個函數: rand()、srand()和time()。 函數介紹 頭文件 : #includestdlib.h 函數聲明 : int rand(void) 作用 ; 生成一個偽隨機數序列,隨機數取值范圍是0~RAND_MAX PS - RAND_MAX其實是一個宏

    2024年02月04日
    瀏覽(22)
  • 你知道C語言中隨機數是如何生成的嗎~?

    你知道C語言中隨機數是如何生成的嗎~?

    目錄 1.你聽說過函數rand的嗎? 2.引入srand函數~ 3.time函數的使用~ 4.隨機數的實現! 5. 如何控制隨機數的范圍呢~ 6.這時候我們就可以寫出一些比較有趣的代碼啦~? 7.對我們說的一些話~ ? ? ? ? ? ? ? ? ? ? ? ? ? ?不是每個人都能做自己想做的事,成為自己想成為的人。 ?

    2024年02月22日
    瀏覽(20)
  • C語言中隨機數的生成(rand函數和srand函數)

    C語言中隨機數的生成(rand函數和srand函數)

    CSDN話題挑戰(zhàn)賽第2期 參賽話題:學習筆記 學習之路,長路漫漫,寫學習筆記的過程就是把知識講給自己聽的過程。這個過程中,我們去記錄思考的過程,便于日后復習,梳理自己的思路。學習之樂,獨樂樂,不如眾樂樂,把知識講給更多的人聽,何樂而不為呢? 目錄 一.rand函

    2024年02月04日
    瀏覽(20)
  • 如何在 MATLAB 中生成指定范圍內的隨機數

    如何在 MATLAB 中生成指定范圍內的隨機數 在 MATLAB 中,我們可以使用內置函數來生成指定范圍內的隨機數。這些函數包括 rand 、 randi 和 randn ,它們分別用于生成在[0,1)范圍內的均勻分布隨機數、在指定范圍內的整數隨機數以及符合標準正態(tài)分布的隨機數。 下面我將為你展示如

    2024年02月06日
    瀏覽(29)
  • R語言【base】——.Random.seed(),RNGkind(),RNGversion(),set.seed():隨機數生成器

    Package? base ?version 4.2.0 .Random.seed是一個整數向量,包含R中生成隨機數的隨機數生成器(RNG)狀態(tài)。它可以保存和恢復,但不應該被用戶更改。 RNGkind是一個更友好的接口,用于查詢或設置正在使用的RNG類型。 RNGversion在早期的R版本中可以用來設置隨機生成器(為了再現性)。 set

    2024年02月22日
    瀏覽(21)
  • Unity 中的隨機數的基礎常用的隨機數生成方法

    在 Unity 中,可以使用 Random 類來生成隨機數。以下是一些常用的隨機數生成方法: Random.Range(min, max):生成一個在[min, max)范圍內的隨機整數。 Random.value:生成一個在[0, 1)范圍內的隨機浮點數。 Random.insideUnitCircle:生成一個在單位圓內的隨機二維向量。 Random.insideUnitSphere:生成

    2024年02月20日
    瀏覽(43)

覺得文章有用就打賞一下文章作者

支付寶掃一掃打賞

博客贊助

微信掃一掃打賞

請作者喝杯咖啡吧~博客贊助

支付寶掃一掃領取紅包,優(yōu)惠每天領

二維碼1

領取紅包

二維碼2

領紅包