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

C語言/C++隨機(jī)數(shù)生成,程序運(yùn)行時(shí)間計(jì)時(shí)器(含高精度計(jì)時(shí)器),包括Windows環(huán)境與Linux環(huán)境

這篇具有很好參考價(jià)值的文章主要介紹了C語言/C++隨機(jī)數(shù)生成,程序運(yùn)行時(shí)間計(jì)時(shí)器(含高精度計(jì)時(shí)器),包括Windows環(huán)境與Linux環(huán)境。希望對大家有所幫助。如果存在錯誤或未考慮完全的地方,請大家不吝賜教,您也可以點(diǎn)擊"舉報(bào)違法"按鈕提交疑問。

?

C語言/C++隨機(jī)數(shù)生成,程序運(yùn)行時(shí)間計(jì)時(shí)器(含高精度計(jì)時(shí)器),包括Windows環(huán)境與Linux環(huán)境

??【數(shù)據(jù)結(jié)構(gòu)與算法】專題正在持續(xù)更新中,各種數(shù)據(jù)結(jié)構(gòu)的創(chuàng)建原理與運(yùn)用?,經(jīng)典算法的解析?都在這兒,歡迎大家前往訂閱本專題,獲取更多詳細(xì)信息哦??????

??本系列專欄 - ?數(shù)據(jù)結(jié)構(gòu)與算法_勾欄聽曲_0

??歡迎大家 ??? ?點(diǎn)贊?? ?評論?? ?收藏??

??個人主頁 - 勾欄聽曲_0的博客??

??希望本文能對你有所幫助,如有不足請指正,共同進(jìn)步吧??

??善治病者,必醫(yī)其受病之處;善救弊者,必塞其起弊之源。??

計(jì)時(shí)器

通用計(jì)時(shí)器

????????使用c語言庫中的函數(shù)來完成計(jì)時(shí),不過精度只有毫秒

#include <time.h>   //引入頭文件
int main()
{
    clock_t start,end;   //定義clock_t變量
    start = clock();     //開始時(shí)間
 
    fun()  //需計(jì)時(shí)的函數(shù)
 
    end = clock();   //結(jié)束時(shí)間
    cout<<"time = "<<double(end-start)/CLOCKS_PER_SEC<<"s"<<endl;  //輸出時(shí)間(單位:s)
}

高精度計(jì)時(shí)器

Windows環(huán)境

????????這個高精度計(jì)數(shù)的方法想要用到<windows.h>的頭文件,是以微秒為單位,但是QueryPerformanceCounter()確切的精確計(jì)時(shí)的最小單位是與系統(tǒng)有關(guān)的,這個方法只在Windows環(huán)境下可用。

#include <windows.h>   //引入頭文件
int main()
{
    LARGE_INTEGER t1,t2,tc;
    QueryPerformanceFrequency(&tc);
    QueryPerformanceCounter(&t1);
 
    fun()  //需計(jì)時(shí)的函數(shù)
 
    QueryPerformanceCounter(&t2);
    time=(double)(t2.QuadPart-t1.QuadPart)/(double)tc.QuadPart; 
    cout<<"time = "<<time<<endl;  //輸出時(shí)間(單位:s)
}

Linux環(huán)境

????????這段代碼的目的是在Linux環(huán)境下計(jì)算程序運(yùn)行時(shí)間的高精度計(jì)時(shí)函數(shù)。clock_gettime函數(shù)是Linux環(huán)境下的一個函數(shù),它不是標(biāo)準(zhǔn)的C語言函數(shù),所以在Windows環(huán)境下可能不被支持。它的主要思路是:

????????????????定義一個函數(shù)get_nanoseconds,用于返回當(dāng)前時(shí)間的納秒數(shù)。納秒是10的-9次方秒,是一種非常精確的時(shí)間單位。

????????????????在函數(shù)中,使用clock_gettime函數(shù),獲取當(dāng)前時(shí)間,存儲在一個timespec結(jié)構(gòu)體中。這個結(jié)構(gòu)體有兩個成員變量,一個是秒數(shù),一個是納秒數(shù)。

????????????????返回這個結(jié)構(gòu)體中的秒數(shù)乘以10的9次方,加上納秒數(shù),得到當(dāng)前時(shí)間的納秒數(shù)。

????????????????在主函數(shù)中,定義一個變量start,調(diào)用get_nanoseconds函數(shù),獲取程序開始運(yùn)行時(shí)的時(shí)間。

? ? ? ? ? ? ? ? 執(zhí)行你要計(jì)時(shí)的程序代碼。

????????????????定義一個變量end,調(diào)用get_nanoseconds函數(shù),獲取程序結(jié)束運(yùn)行時(shí)的時(shí)間。

????????????????計(jì)算end和start的差值,除以10的9次方,得到程序運(yùn)行時(shí)間的秒數(shù)。

#include <stdio.h>
#include <time.h>

// 定義一個函數(shù),返回當(dāng)前時(shí)間的納秒數(shù)
long long get_nanoseconds() {
  // 定義一個timespec結(jié)構(gòu)體,用于存儲時(shí)間信息
  struct timespec ts;
  // 調(diào)用clock_gettime函數(shù),獲取當(dāng)前時(shí)間,存儲在ts中
  clock_gettime(CLOCK_MONOTONIC, &ts);
  // 返回ts中的秒數(shù)乘以10的9次方,加上納秒數(shù)
  return ts.tv_sec * 1000000000LL + ts.tv_nsec;
}

// 測試函數(shù)
int main() {
  // 定義一個變量,存儲開始時(shí)間
  long long start = get_nanoseconds();
  // 執(zhí)行一些操作,比如打印一句話
  printf("Hello, world!\n");
  // 定義一個變量,存儲結(jié)束時(shí)間
  long long end = get_nanoseconds();
  // 計(jì)算運(yùn)行時(shí)間,單位為秒
  double duration = (end - start) / 1000000000.0;
  // 打印結(jié)果
  printf("The program took %f seconds to run.\n", duration);
  return 0;
}

隨機(jī)數(shù)生成

普通隨機(jī)數(shù)生成

????????? 生成隨機(jī)數(shù)最常見的方法是用內(nèi)置的函數(shù)rand()函數(shù),再由srand()函數(shù)(用于給rand()函數(shù)設(shè)定種子)配合time() 函數(shù)獲取不同的種子,由此來生成隨機(jī)數(shù)。

#include <time.h>

// 定義一個函數(shù),返回一個在min和max之間的隨機(jī)整數(shù)
int random_int(int min, int max) {
  // 使用當(dāng)前時(shí)間作為隨機(jī)數(shù)種子
  srand(time(NULL));
  // 生成一個在0到max-min之間的隨機(jī)數(shù),然后加上min
  return rand() % (max - min + 1) + min;
}

高精度隨機(jī)數(shù)生成

Windows環(huán)境

上述方法雖然可以生成隨機(jī)數(shù),但是有一個缺點(diǎn),那就是time()獲取的時(shí)間是秒,而程序運(yùn)行速度較快時(shí),在同一秒中生生成了多個隨機(jī)數(shù),那么他們的種子就都是相同的,生成的隨機(jī)數(shù)也是一樣的。所以這個方法并不是特別實(shí)用。

? ? ? ? 在這里我們來介紹一種利用硬件可以在一秒內(nèi)生成多個隨機(jī)數(shù)的方法,其原理與上面類似,不過這個取的種子的精度并不是秒,而是微秒,這樣就能最大程度的保障每一次生成隨機(jī)數(shù)的種子都是不同的。

/*
Random:一秒內(nèi)生成不同隨機(jī)數(shù)
參數(shù): 
	@n : 為精度,即運(yùn)算中保留小數(shù)點(diǎn)后幾位
	@min:隨機(jī)數(shù)的最小取值 
	@max: 隨機(jī)數(shù)的最大取值
*/ 
int Random(int n,int min,int max)
{
	LARGE_INTEGER seed;
	QueryPerformanceFrequency(&seed);//返回硬件支持的高精度計(jì)數(shù)器的頻率
	QueryPerformanceCounter(&seed);//函數(shù)返回高精確度性能計(jì)數(shù)器的值,它可以以微妙為單位計(jì)
	srand(seed.QuadPart);    //初始化一個以微秒為單位的時(shí)間種子
    int Precision = pow(10,n) - 1;
   
    return (int)((rand() % Precision / (float)(Precision + 1))*pow(10,n)) % max + min;
}

Linux環(huán)境

? ? ? ? 一樣是利用上面再Linux環(huán)境下高精度的計(jì)時(shí)器來完成在一秒以內(nèi)生成多個不同的隨機(jī)數(shù)的功能。文章來源地址http://www.zghlxwxcb.cn/news/detail-425762.html

#include <time.h>

// 定義一個函數(shù),返回一個在min和max之間的隨機(jī)整數(shù)
int random_int(int min, int max) {
  // 定義一個timespec結(jié)構(gòu)體,用于存儲時(shí)間信息
  struct timespec ts;
  // 調(diào)用clock_gettime函數(shù),獲取當(dāng)前時(shí)間,存儲在ts中
  clock_gettime(CLOCK_MONOTONIC, &ts);
  // 返回ts中的秒數(shù)乘以10的9次方,加上納秒數(shù)
  // 使用當(dāng)前時(shí)間的納秒數(shù)作為隨機(jī)數(shù)種子
  srand(ts.tv_sec * 1000000000LL + ts.tv_nsec);
  // 生成一個在0到max-min之間的隨機(jī)數(shù),然后加上min
  return rand() % (max - min + 1) + min;  
}

到了這里,關(guān)于C語言/C++隨機(jī)數(shù)生成,程序運(yùn)行時(shí)間計(jì)時(shí)器(含高精度計(jì)時(shí)器),包括Windows環(huán)境與Linux環(huán)境的文章就介紹完了。如果您還想了解更多內(nèi)容,請?jiān)谟疑辖撬阉鱐OY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關(guān)文章,希望大家以后多多支持TOY模板網(wǎng)!

本文來自互聯(lián)網(wǎng)用戶投稿,該文觀點(diǎn)僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務(wù),不擁有所有權(quán),不承擔(dān)相關(guān)法律責(zé)任。如若轉(zhuǎn)載,請注明出處: 如若內(nèi)容造成侵權(quán)/違法違規(guī)/事實(shí)不符,請點(diǎn)擊違法舉報(bào)進(jìn)行投訴反饋,一經(jīng)查實(shí),立即刪除!

領(lǐng)支付寶紅包贊助服務(wù)器費(fèi)用

相關(guān)文章

  • C語言生成隨機(jī)數(shù)【簡易抽卡代碼為例】

    C語言生成隨機(jī)數(shù)【簡易抽卡代碼為例】

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

    2024年02月04日
    瀏覽(22)
  • C語言隨機(jī)數(shù)生成和范圍設(shè)置詳解【超詳細(xì)教程】

    C語言隨機(jī)數(shù)生成和范圍設(shè)置詳解【超詳細(xì)教程】

    本文詳細(xì)介紹了C語言中如何使用rand函數(shù)生成隨機(jī)數(shù)以及利用srand函數(shù)設(shè)置隨機(jī)數(shù)的種子,同時(shí)解釋了如何控制隨機(jī)數(shù)的范圍。適合初學(xué)者學(xué)習(xí)和實(shí)踐。

    2024年02月05日
    瀏覽(29)
  • C語言中隨機(jī)數(shù)的生成(rand函數(shù)和srand函數(shù))

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

    CSDN話題挑戰(zhàn)賽第2期 參賽話題:學(xué)習(xí)筆記 學(xué)習(xí)之路,長路漫漫,寫學(xué)習(xí)筆記的過程就是把知識講給自己聽的過程。這個過程中,我們?nèi)ビ涗浰伎嫉倪^程,便于日后復(fù)習(xí),梳理自己的思路。學(xué)習(xí)之樂,獨(dú)樂樂,不如眾樂樂,把知識講給更多的人聽,何樂而不為呢? 目錄 一.rand函

    2024年02月04日
    瀏覽(20)
  • R語言【base】——.Random.seed(),RNGkind(),RNGversion(),set.seed():隨機(jī)數(shù)生成器

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

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

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

    2024年02月20日
    瀏覽(43)
  • JS - 生成隨機(jī)數(shù)的方法匯總(不同范圍、類型的隨機(jī)數(shù))

    (1)使用 random() 方法可以返回一個介于 0 ~ 1 之間的偽隨機(jī)數(shù)(包括 0,不包括 1)。 (2)下面是一個測試樣例 (1)這種最簡單,因?yàn)楹?random 的特點(diǎn)保持一致。只需使用如下公式即可: (2)比如下面生成 [10,15) 范圍內(nèi)的隨機(jī)浮點(diǎn)數(shù)。 因?yàn)?random 的特點(diǎn),要取得這幾個區(qū)間

    2023年04月08日
    瀏覽(26)
  • java生成隨機(jī)數(shù)

    java生成隨機(jī)數(shù)

    ?? bound 必須是正數(shù)。 以下代碼生成的是 0 到 30 的隨機(jī)數(shù)。 生成區(qū)間的隨機(jī)數(shù):[最小值,最大值] 學(xué)的不是技術(shù),更是夢想!??!

    2024年02月07日
    瀏覽(37)
  • 生成隨機(jī)數(shù)

    用于產(chǎn)生隨機(jī)數(shù) boolean nextBoolean() : 返回下一個偽隨機(jī)數(shù),它是取自此隨機(jī)數(shù)生成器序列的均勻分布的 boolean 值。 void nextBytes(byte[] bytes) : 生成隨機(jī)字節(jié)并將其置于用戶提供的 byte 數(shù)組中。 double nextDouble() : 返回下一個偽隨機(jī)數(shù),它是取自此隨機(jī)數(shù)生成器序列的、在 0.0 和 1.0 之

    2024年02月03日
    瀏覽(30)
  • Flutter 生成隨機(jī)數(shù)

    如何讓隨機(jī)數(shù)變化? 我們嘗試過的都知道,當(dāng)你創(chuàng)建出來一個隨機(jī)數(shù)后,調(diào)用他他的值是隨機(jī)的,但是,這時(shí)候他的值就會固定住,不管怎么樣都是隨機(jī)出來的那個數(shù),如果想要他每次都不一樣的話,我們就想要使用刷新來讓他變化了。 我們可以使用這樣的方法來使他每次不一

    2024年02月13日
    瀏覽(21)
  • haiku生成隨機(jī)數(shù)

    Haiku 遵循 JAX 的設(shè)計(jì),生成的隨機(jī)數(shù)是兩個元素組成的列表。其中第一個元素是用于生成偽隨機(jī)數(shù)的狀態(tài),第二個元素是用于分發(fā)密鑰的子鍵。兩個元素分別用于狀態(tài)和子鍵,確保在分布式計(jì)算或并行計(jì)算中,多個隨機(jī)數(shù)生成器的狀態(tài)可以在一定程度上相互影響,從而提高隨

    2024年01月20日
    瀏覽(27)

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

支付寶掃一掃打賞

博客贊助

微信掃一掃打賞

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

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

二維碼1

領(lǐng)取紅包

二維碼2

領(lǐng)紅包