日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

两道概率题-供大家周末把玩

發布時間:2025/6/15 编程问答 29 豆豆
生活随笔 收集整理的這篇文章主要介紹了 两道概率题-供大家周末把玩 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

兩道概率題-供大家周末把玩

題目

1.給定一個函數rand5(),該函數能等概率生成1-5之間的整數(包括1和5),如何用該函數等概率生成整數1-7?

解法

本以為很簡單,做了以后才發現其實并不簡單,這個題難就難在要求是等概率,貼出幾個解法,供大家參考

下面代碼來自StackOverflow

解法一

代碼 int i;
do
{
i
= 5 * (rand5() - 1) + rand5(); // i is now uniformly random between 1 and 25
} while(i > 21);
// i is now uniformly random between 1 and 21
return i % 7 + 1; // result is now uniformly random between 1 and 7

解法二(更直觀一些)

代碼 int rand7()
{
int vals[5][5] = {
{
1, 2, 3, 4, 5 },
{
6, 7, 1, 2, 3 },
{
4, 5, 6, 7, 1 },
{
2, 3, 4, 5, 6 },
{
7, 0, 0, 0, 0 }
};

int result = 0;
while (result == 0)
{
int i = rand5();
int j = rand5();
result
= vals[i-1][j-1];
}
return result;
}

2. 一個隨機數生成函數f(),只產生數字1和0,生成1的概率是p,生成0的概率是1-p,如何利用該函數等概率生成1和0?(此題來自算法導論一書)

由于p(1-p)和(1-p)p是兩個等概率事件,根據這個原理,可得如下代碼

int func()
{
int i ;
int j ;
while(true)
{
i
= f() ;
j
= f() ;

if(i == 1 && j == 0)
return 1;
else if(i == 0 && j == 1)
return 0;
}
}

posted on 2010-07-10 18:24 zdd 閱讀(...) 評論(...) 編輯 收藏

總結

以上是生活随笔為你收集整理的两道概率题-供大家周末把玩的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。