voip
風(fēng)的方向
厚德致遠(yuǎn),博學(xué)敦行!
C++博客
首頁
新隨筆
新文章
聯(lián)系
聚合
管理
posts - 52,comments - 21,trackbacks - 0
<
2010年10月
>
日
一
二
三
四
五
六
26
27
28
29
30
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
31
1
2
3
4
5
6
哥哥回來了~~
常用鏈接
我的隨筆
我的評(píng)論
我參與的隨筆
留言簿
(1)
給我留言
查看公開留言
查看私人留言
隨筆分類
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
第四維
過客空間
劉品
音頻處理
牽著老婆。。
搜索
最新評(píng)論
1.?re: min和max頭文件
這位說的是對(duì)的~我用algorithm就是不行
--maxmin
2.?re: min和max頭文件[未登錄]
algorithm是stl的東西,要用std::max
--123
3.?re: 過河卒[未登錄]
@cs
什么都百度要腦袋有嘛用~兄弟~
--jince
4.?re: 過河卒
不能過
--cs
5.?re: min和max頭文件
是應(yīng)該在stdlib里面
--mushroom
閱讀排行榜
1.?min和max頭文件(27643)
2.? 最少硬幣問題 (3767)
3.?均分紙牌(2935)
4.?矩陣相乘(2537)
5.?整數(shù)劃分(2453)
評(píng)論排行榜
1.?min和max頭文件(4)
2.?整數(shù)劃分(2)
3.?免費(fèi)餡餅(2)
4.?最大和子段(2)
5.?隨機(jī)數(shù)(2)
隨機(jī)數(shù)應(yīng)用
學(xué)以致用!!!
隨機(jī)數(shù)可以用來計(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)做種子了,沒有再用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è)越界問題,但是還是會(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ù)的角度來理解,在函數(shù)反復(fù)調(diào)用過程中,該對(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í)例來說,應(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ì)算了概率,通過強(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語言時(shí)間日期函數(shù)說明:
http://www.cnblogs.com/neonlight/archive/2008/08/22/1273942.html
posted on 2010-09-13 15:51
jince
閱讀(640)
評(píng)論(0)
編輯
收藏
引用
所屬分類:
算法設(shè)計(jì)與分析
只有注冊(cè)用戶
登錄
后才能發(fā)表評(píng)論。
【推薦】100%開源!大型工業(yè)跨平臺(tái)軟件C++源碼提供,建模,組態(tài)!
相關(guān)文章:
集合劃分
電路布線
隨機(jī)數(shù)應(yīng)用
0-1背包問題
最大m子段和
最大和矩陣
隨機(jī)數(shù)
二分搜索
漢諾塔
循環(huán)賽
網(wǎng)站導(dǎo)航:
博客園
IT新聞
BlogJava
博問
Chat2DB
管理
Copyright ©2025 jince Powered By
博客園
模板提供:
滬江博客
哈哈哈哈哈哈
久久人做人爽一区二区三区
|
亚洲AV日韩精品久久久久久久
|
亚洲人成电影网站久久
|
一级做a爰片久久毛片人呢
|
久久久久波多野结衣高潮
|
久久久久婷婷
|
久久综合精品国产二区无码
|
yy6080久久
|
久久人与动人物a级毛片
|
97久久国产综合精品女不卡
|
精品综合久久久久久98
|
中文字幕精品久久久久人妻
|
久久国产精品无
|
色综合久久久久综合体桃花网
|
无码人妻精品一区二区三区久久
|
久久精品aⅴ无码中文字字幕重口
|
亚洲精品国产美女久久久
|
久久夜色精品国产噜噜麻豆
|
精品久久久噜噜噜久久久
|
日本久久久精品中文字幕
|
久久国产精品无码网站
|
久久久久亚洲AV无码观看
|
色欲久久久天天天综合网
|
久久国产精品国产自线拍免费
|
色成年激情久久综合
|
天天综合久久一二三区
|
久久99国产精一区二区三区
|
国产精品99久久久久久宅男
|
色偷偷88欧美精品久久久
|
狠狠色综合网站久久久久久久高清
|
99久久精品国内
|
久久久久亚洲精品男人的天堂
|
精品久久久无码人妻中文字幕
|
久久无码专区国产精品发布
|
久久久久成人精品无码中文字幕
|
999久久久免费国产精品播放
|
一本久道久久综合狠狠躁AV
|
成人久久综合网
|
囯产精品久久久久久久久蜜桃
|
国产精品久久久久久久久
|
久久人妻少妇嫩草AV蜜桃
|