voip
風(fēng)的方向
厚德致遠(yuǎn),博學(xué)敦行!
C++博客
首頁(yè)
新隨筆
新文章
聯(lián)系
聚合
管理
posts - 52,comments - 21,trackbacks - 0
<
2012年6月
>
日
一
二
三
四
五
六
27
28
29
30
31
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
1
2
3
4
5
6
7
哥哥回來(lái)了~~
常用鏈接
我的隨筆
我的評(píng)論
我參與的隨筆
留言簿
(1)
給我留言
查看公開(kāi)留言
查看私人留言
隨筆分類
C++學(xué)習(xí)(3)
Questions(15)
生活瑣事(4)
算法設(shè)計(jì)與分析(17)
學(xué)習(xí)到的一些小知識(shí)(3)
隨筆檔案
2016年12月 (1)
2010年11月 (1)
2010年10月 (8)
2010年9月 (39)
2010年8月 (3)
牛人
ACM
matrix67
RyanWang
第四維
過(guò)客空間
劉品
音頻處理
牽著老婆。。
搜索
最新評(píng)論
1.?re: min和max頭文件
這位說(shuō)的是對(duì)的~我用algorithm就是不行
--maxmin
2.?re: min和max頭文件[未登錄](méi)
algorithm是stl的東西,要用std::max
--123
3.?re: 過(guò)河卒[未登錄](méi)
@cs
什么都百度要腦袋有嘛用~兄弟~
--jince
4.?re: 過(guò)河卒
不能過(guò)
--cs
5.?re: min和max頭文件
是應(yīng)該在stdlib里面
--mushroom
閱讀排行榜
1.?min和max頭文件(27662)
2.? 最少硬幣問(wèn)題 (3774)
3.?均分紙牌(2947)
4.?矩陣相乘(2544)
5.?整數(shù)劃分(2461)
評(píng)論排行榜
1.?min和max頭文件(4)
2.?免費(fèi)餡餅(2)
3.?整數(shù)劃分(2)
4.?均分紙牌(2)
5.?隨機(jī)數(shù)(2)
隨機(jī)數(shù)應(yīng)用
學(xué)以致用!!!
隨機(jī)數(shù)可以用來(lái)計(jì)算概率,面積等!!
一、隨機(jī)數(shù),模擬拋硬幣正面時(shí)間頻率圖。
代碼如下:
#include
<
iostream
>
#include
<
time.h
>
using
namespace
std;
const
unsigned
long
maxshort
=
65536L
;
const
unsigned
long
multiplier
=
1194211693L
;
const
unsigned
long
adder
=
12345L
;
class
RandomNumber
{
private
:
unsigned
long
randSeed;
//
隨機(jī)種子
public
:
RandomNumber(unsigned
long
s
=
0
);
//
構(gòu)造函數(shù),為randSeed置數(shù)
unsigned
short
Random(unsigned
long
n);
//
獲取0~n的一個(gè)隨機(jī)數(shù)
double
fRandom(
void
);
//
獲取一個(gè)小數(shù)
}
;
RandomNumber::RandomNumber(unsigned
long
s)
{
if
(s
==
0
)
randSeed
=
time(
0
);
//
這里獲取直接用time函數(shù)獲取了一個(gè)時(shí)間值當(dāng)做種子了,沒(méi)有再用srand函數(shù)構(gòu)造種子了!網(wǎng)上查了下time()函數(shù)為從1970年1月1日0時(shí)0分0秒到此時(shí)的秒數(shù)!!!
else
randSeed
=
s;
}
unsigned
short
RandomNumber::Random(unsigned
long
n)
{
//
printf("randSeed:%lu \nmultiplier:%lu \nrandSeed*multiplier:%lu\n",randSeed,multiplier,randSeed*multiplier);
randSeed
=
multiplier
*
randSeed
+
adder;
//
這里存在一個(gè)越界問(wèn)題,但是還是會(huì)從新獲得一個(gè)randSeed
//
printf("(randSeed>>16):%lu\n",randSeed>>16);
return
(unsigned
short
)((randSeed
>>
16
)
%
n);
//
右移16為再與n取余,從而獲得一個(gè)0~n的隨機(jī)數(shù),其實(shí)我還不明白,為啥還要右移呢?難道是為了隨機(jī)性?
}
double
RandomNumber::fRandom(
void
)
{
return
Random(maxshort)
/
double
(maxshort);
}
int
TossCoins(
int
numberCoins)
{
static
RandomNumber coinToss;
//
注意了這里定義了一個(gè)靜態(tài)變量,在函數(shù)反復(fù)調(diào)用中coinToss的屬性值不變,從構(gòu)造函數(shù)的角度來(lái)理解,在函數(shù)反復(fù)調(diào)用過(guò)程中,該對(duì)象是不會(huì)重新去構(gòu)造的(不會(huì)重復(fù)調(diào)用構(gòu)造函數(shù)的)!
int
i,tosses
=
0
;
for
(i
=
0
;i
<
numberCoins;i
++
)
//
這里調(diào)用Random函數(shù)!!
{
tosses
+=
coinToss.Random(
2
);
//
返回0或1,1表示正面,0表示反面,累計(jì)正面朝上的次數(shù)
}
return
tosses;
//
返回正面朝上的次數(shù)
}
void
main()
{
const
int
NCOINS
=
10
;
//
定義了常量,我從一些牛人哪里看到,我們應(yīng)該把靜態(tài)變量看成只讀。。。
const
long
NTOSSES
=
50000L
;
long
i,heads[NCOINS
+
1
];
//
h[i]代表NTOSSES次拋NCOINS次拋硬幣中i次正面次數(shù),貌似有些拗口,按這個(gè)實(shí)例來(lái)說(shuō),應(yīng)該是做50000次拋10次硬幣,然后統(tǒng)計(jì)10次中出現(xiàn)0次正面朝上次數(shù),1次正面朝上次數(shù),。。10次正面朝上次數(shù)
int
j,position;
for
(j
=
0
;j
<
NCOINS
+
1
;j
++
)
heads[j]
=
0
;
for
(i
=
0
;i
<
NTOSSES;i
++
)
//
累計(jì)
heads[TossCoins(NCOINS)]
++
;
cout
<<
"
head結(jié)果:
"
;
for
(i
=
0
;i
<=
NCOINS;i
++
)
//
輸出h結(jié)果
{
cout
<<
heads[i]
<<
"
"
;
}
cout
<<
endl;
for
(i
=
0
;i
<=
NCOINS;i
++
)
//
模擬拋硬幣正面事件平率圖
{
position
=
int
(
float
(heads[i])
/
NTOSSES
*
100
);
//
這里有強(qiáng)制類型轉(zhuǎn)換,其實(shí)這里計(jì)算了概率,通過(guò)強(qiáng)制類型轉(zhuǎn)換成整數(shù)!!!
cout
<<
i
<<
"
"
;
for
(j
=
0
;j
<
position
-
1
;j
++
)
//
輸出空格
cout
<<
"
"
;
cout
<<
"
*
"
<<
endl;
}
}
運(yùn)行結(jié)果如下:
二、隨機(jī)數(shù),計(jì)算∏。基本思想也是運(yùn)用了概率事件!設(shè)有一個(gè)半徑為r的圓及其外切四邊形,向該圖形投擲N個(gè)點(diǎn)。設(shè)落入圓內(nèi)的點(diǎn)數(shù)為K,由于投入的點(diǎn)在正方形上分布均勻,所以落入圓中的概率為∏*R^2/4/R^2,從投點(diǎn)的角度考慮,該概率為K/N,當(dāng)N足夠大時(shí),我們可以近似的認(rèn)為二者相等。從而∏=4*K/N。
代碼如下:
double
Darts(
int
n)
{
static
RandomNumber dart;
int
k
=
0
;
for
(
int
i
=
1
;i
<=
n;i
++
)
{
double
x
=
dart.fRandom();
double
y
=
dart.fRandom();
if
((x
*
x
+
y
*
y)
<=
1
)
k
++
;
}
return
4
*
k
/
double
(n);
}
當(dāng)n=500000000時(shí),運(yùn)行結(jié)果如下:
printf輸出:
http://hi.baidu.com/jiaju111/blog/item/dcd7fd8ba9a7fa1ac9fc7ae2.html
C語(yǔ)言時(shí)間日期函數(shù)說(shuō)明:
http://www.cnblogs.com/neonlight/archive/2008/08/22/1273942.html
posted on 2010-09-13 15:51
jince
閱讀(647)
評(píng)論(0)
編輯
收藏
引用
所屬分類:
算法設(shè)計(jì)與分析
只有注冊(cè)用戶
登錄
后才能發(fā)表評(píng)論。
【推薦】100%開(kāi)源!大型工業(yè)跨平臺(tái)軟件C++源碼提供,建模,組態(tài)!
相關(guān)文章:
集合劃分
電路布線
隨機(jī)數(shù)應(yīng)用
0-1背包問(wèn)題
最大m子段和
最大和矩陣
隨機(jī)數(shù)
二分搜索
漢諾塔
循環(huán)賽
網(wǎng)站導(dǎo)航:
博客園
IT新聞
BlogJava
博問(wèn)
Chat2DB
管理
Copyright ©2025 jince Powered By
博客園
模板提供:
滬江博客
哈哈哈哈哈哈
久久男人中文字幕资源站
|
日日狠狠久久偷偷色综合0
|
国产精品一区二区久久精品无码
|
国产精品美女久久福利网站
|
99久久人人爽亚洲精品美女
|
97久久精品无码一区二区天美
|
日本强好片久久久久久AAA
|
久久久久se色偷偷亚洲精品av
|
久久久久亚洲精品日久生情
|
日韩精品久久久久久久电影
|
日韩人妻无码一区二区三区久久99
|
亚洲精品99久久久久中文字幕
|
欧美亚洲日本久久精品
|
欧美精品福利视频一区二区三区久久久精品
|
久久久不卡国产精品一区二区
|
精品久久久久久无码人妻热
|
久久综合成人网
|
无码AV中文字幕久久专区
|
国产精品久久久久天天影视
|
99久久精品免费看国产免费
|
欧美激情精品久久久久久久九九九
|
97精品国产97久久久久久免费
|
亚洲国产精品无码久久久不卡
|
精品久久久噜噜噜久久久
|
欧美亚洲国产精品久久
|
久久婷婷五月综合色高清
|
91精品婷婷国产综合久久
|
久久天天躁狠狠躁夜夜2020老熟妇
|
一本一道久久a久久精品综合
|
亚洲AV无码一区东京热久久
|
国产精品久久久久久福利漫画
|
国产精品美女久久久免费
|
久久婷婷国产剧情内射白浆
|
天天综合久久久网
|
久久精品国产99久久久古代
|
久久精品国产亚洲麻豆
|
伊人久久大香线蕉综合Av
|
一级做a爰片久久毛片16
|
国产99久久久国产精品小说
|
精品蜜臀久久久久99网站
|
久久久久亚洲国产
|