Re: [問題] 亂數的問題
我提供一點我做不重覆的亂數的作法
首先你的範圍 是0到9 給個array 放這10個 int num[i] = i for i = 0 to 9
先訂一個pt 是代表我們還可以取的個數 - 1(因為 我們的array 是從0開始的)
所以一開始當然是 pt = 9
而我們可以用 取亂數的方式得到一個 0 到pt 的亂數吧
取到之後 假設是 n 作 swap(num[n],num[pt]) pt-- 則
我們第一個選到的數字就會跑到最後一格去
而 如果我們再做一次取0 到pt 的亂數時
num[0] 到 num[pt] 就一定是我們沒選過的數字
所以這時候選到的數字當然是又亂又不會重覆了
(你要選出幾個不重覆的 就跑幾圈就是了)
當然 如果pt = -1 時 代表你已經選了10個亂數了 再選一定會重覆
而我們的目的是不重覆 所以當然 不會從10個數字選出 11個不重覆的 (也辦不到)
而這種方法 也可以用在 你有一個set 個個都不一樣 選出random不重覆的幾個
只要給好 num[0] 到 num[個數-1] 的內容就好( 當然 不一定要int 可以是其他的)
--
※ 發信站: 批踢踢實業坊(ptt.cc)
◆ From: 140.112.50.171
推
04/07 16:49, , 1F
04/07 16:49, 1F
討論串 (同標題文章)
完整討論串 (本文為第 1 之 2 篇):
1
1
C_and_CPP 近期熱門文章
PTT數位生活區 即時熱門文章