欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

C++如何解決rand()函數(shù)生成的隨機數(shù)每次都一樣的問題

 更新時間:2023年08月01日 11:09:14   作者:Carpe_yj_Diem  
這篇文章主要介紹了C++如何解決rand()函數(shù)生成的隨機數(shù)每次都一樣的問題,具有很好的參考價值,希望對大家有所幫助,如有錯誤或未考慮完全的地方,望不吝賜教

rand()函數(shù)生成的隨機數(shù)每次都一樣問題

C++的隨機數(shù)函數(shù)rand是一個偽隨機數(shù),從固定的初始種子計算得出。所以每次運行獲取到的隨機數(shù)序列是相同的。

要解決這一問題,需要設(shè)置一個隨機數(shù)種子,一般用當(dāng)前時間作為種子

#include <iostream>
#include <time.h>
using namespace std;
int main()
{
	srand((unsigned)time(NULL));
	int n = rand() % 100;
	cout << n << endl; 
}

解讀rand()為啥每次生成的數(shù)都是一樣的

在運行一個帶有rand()的程序的時候,想打印一下它的值,發(fā)現(xiàn)每一次打印都是41,第一個數(shù)

原來rand()是計算機內(nèi)的一個生成偽隨機數(shù)的,生成的其實并不是隨機數(shù),而是具有一定規(guī)律的遞推出來的數(shù)。

要在rand()前面加上sand(time(0)),不要忘記加上頭文件time.h,

sand(time(0))不能放在循環(huán)里面寫

如果計算偽隨機序列的初始數(shù)值(稱為種子)相同,則計算出來的偽隨機序列就是完全相同的。這個特性被有的軟件利用于加密和解密。加密時,可以用某個種子數(shù)生成一個偽隨機序列并對數(shù)據(jù)進行處理

每產(chǎn)生一個隨機數(shù)之前,都調(diào)用一次srand,而由于計算機運行很快,所以你每次用time得到的時間都是一樣的(time的時間精度較低,只有55ms)。這樣相當(dāng)于使用同一個種子產(chǎn)生隨機序列,所以產(chǎn)生的隨機數(shù)總是相同的。應(yīng)該把srand放在循環(huán)外

po上藍橋奪冠概率的代碼

#include<iostream>
#include<cstdio>
#include<stdlib.h>
#include<time.h>
using namespace std;
int main()
{
	/* 
	甲   乙    丙    丁   
甲   -    0.1  0.3   0.5
乙  0.9   -    0.7   0.4 
丙  0.7  0.3   -     0.2
丁  0.5  0.6  0.8    -
*/
	int randf;
	long long int win=0;
	srand(time(0));
	for(int i=1;i<=100000;i++)
	{
		randf=rand();
		if(randf%3==0)//ab
		{
			if(randf%10<1){//a win b
				if(randf%10<2){//c win d
					if(randf%10<3)win++;
				}
				else{//d win c
					if(randf%10<5)win++;
				}
			}
		}
		else if(randf%3==1)//ac
		{
			if(randf%10<3)//a win c
			{
				if(randf%10<4)//b win d
				{
					if(randf%10<1)win++;
				}
				else//d win b
				{
					if(randf%10<5)win++;
				}
			}
		}
		else  //ad
		{
			if(randf%10<5)//a win d
			{
				if(randf%10<3)//c win b
				{
					if(randf%10<3)win++;
				}
				else//b win c
				{
					if(randf%10<1)win++;
				}
			}
		}
	}
	printf("%f\n",win/100000.0);
	return 0;
}

總結(jié)

以上為個人經(jīng)驗,希望能給大家一個參考,也希望大家多多支持腳本之家。

相關(guān)文章

  • C++實現(xiàn)掃雷小游戲(控制臺)

    C++實現(xiàn)掃雷小游戲(控制臺)

    這篇文章主要為大家詳細介紹了C++實現(xiàn)掃雷小游戲,文中示例代碼介紹的非常詳細,具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2022-05-05
  • C++異步操作future和aysnc與function和bind

    C++異步操作future和aysnc與function和bind

    這篇文章主要介紹了C++異步操作future和aysnc與function和bind,文章圍繞主題展開詳細的內(nèi)容介紹,具有一定的參考價值,需要的小伙伴可以參考一下
    2022-09-09
  • 嵌入式C語言二級指針在鏈表中的應(yīng)用

    嵌入式C語言二級指針在鏈表中的應(yīng)用

    這篇文章主要為大家介紹了嵌入式C語言二級指針在鏈表中的應(yīng)用,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進步早日升職加薪
    2022-04-04
  • C語言實現(xiàn)電子時鐘程序

    C語言實現(xiàn)電子時鐘程序

    這篇文章主要為大家詳細介紹了C語言實現(xiàn)電子時鐘程序,文中示例代碼介紹的非常詳細,具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2018-11-11
  • C語言實現(xiàn)“幸運數(shù)”的實例詳解

    C語言實現(xiàn)“幸運數(shù)”的實例詳解

    這篇文章主要介紹了C語言實現(xiàn)“幸運數(shù)”的實例詳解的相關(guān)資料,需要的朋友可以參考下
    2017-07-07
  • C++實現(xiàn)LeetCode(159.最多有兩個不同字符的最長子串)

    C++實現(xiàn)LeetCode(159.最多有兩個不同字符的最長子串)

    這篇文章主要介紹了C++實現(xiàn)LeetCode(159.最多有兩個不同字符的最長子串),本篇文章通過簡要的案例,講解了該項技術(shù)的了解與使用,以下就是詳細內(nèi)容,需要的朋友可以參考下
    2021-07-07
  • C++ list的實例詳解

    C++ list的實例詳解

    這篇文章主要介紹了 C++ list的實例詳解的相關(guān)資料,希望通過本文大家能夠理解掌握這部分內(nèi)容,需要的朋友可以參考下
    2017-09-09
  • Qt5開發(fā)視頻播放器的項目實踐

    Qt5開發(fā)視頻播放器的項目實踐

    Qt對音視頻的播放和控制、相機拍攝、收音機等多媒體應(yīng)用提供了強大的支持,本文主要介紹了Qt5開發(fā)視頻播放器,具有一定的參考價值,感興趣的可以了解一下
    2023-08-08
  • 通過一個小例子來簡單理解C語言中的內(nèi)存空間管理

    通過一個小例子來簡單理解C語言中的內(nèi)存空間管理

    這篇文章主要介紹了通過一個小例子來簡單理解C語言中的內(nèi)存空間管理,涉及到堆和棧等數(shù)據(jù)結(jié)構(gòu)的基本知識,需要的朋友可以參考下
    2015-11-11
  • vs code 配置c/c++環(huán)境的詳細教程(推薦)

    vs code 配置c/c++環(huán)境的詳細教程(推薦)

    這篇文章主要介紹了vs code 配置c/c++環(huán)境的詳細教程(推薦),本文給大家介紹的非常詳細,對大家的學(xué)習(xí)或工作具有一定的參考借鑒價值,需要的朋友可以參考下
    2020-11-11

最新評論