亚洲在线久爱草,狠狠天天香蕉网,天天搞日日干久草,伊人亚洲日本欧美

為了賬號安全,請及時綁定郵箱和手機立即綁定
已解決430363個問題,去搜搜看,總會有你想問的

將隨機范圍從1-5擴展到1-7。

將隨機范圍從1-5擴展到1-7。

將隨機范圍從1-5擴展到1-7。給定一個在1到5范圍內產生隨機整數的函數,寫一個在1到7范圍內產生隨機整數的函數。什么是簡單的解決方案?什么是減少內存使用或在較慢的CPU上運行的有效解決方案?
查看完整描述

3 回答

?
慕勒3428872

TA貢獻1848條經驗 獲得超6個贊

這相當于AdamRosenfield的解決方案,但對一些讀者來說可能更清楚一些。它假定RANRAN 5()是一個函數,它在1到5的范圍內返回一個統計上的隨機整數。

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;
}

它怎麼工作?想想看:想象一下,在紙上打印出這個二維數組,把它貼在一個飛鏢板上,然后隨機地向它扔飛鏢。如果你碰到一個非零值,它是一個統計上的隨機值,介于1到7之間,因為有相同數量的非零值可供選擇。如果你擊中了一個零,繼續扔飛鏢直到你擊中一個非零。這就是這段代碼所做的:i和j索引隨機地在省道板上選擇一個位置,如果我們得不到好的結果,我們就繼續扔飛鏢。

就像亞當說的,在最壞的情況下,這種情況可能會永遠持續下去,但從統計學上說,最壞的情況*)


查看完整回答
反對 回復 2019-07-03
  • 3 回答
  • 0 關注
  • 823 瀏覽

添加回答

舉報

0/150
提交
取消
微信客服

購課補貼
聯系客服咨詢優惠詳情

幫助反饋 APP下載

慕課網APP
您的移動學習伙伴

公眾號

掃描二維碼
關注慕課網微信公眾號