请教H4 pending状态# EB23 - 劳工卡
B*t
1 楼
下面是wiki上的两个实现。第一个是直接shuffle,第二个是取a.length个数且数据源
源不断的进来。链接:http://en.wikipedia.org/wiki/Fisher-Yates_shuffle
To initialize an array a of n elements to a randomly shuffled copy of source
, both 0-based:
a[0] ← source[0]
for i from 1 to n − 1 do
j ← random integer with 0 ≤ j ≤ i
a[i] ← a[j] //这里是不是应该是当 j < i时 a[i] = a[j] a[j] = source[i]
a[j] ← source[i] //这里是当 j == i时
To initialize an empty array a to a randomly shuffled copy of source whose
length is not known:
while source.moreDataAvailable
j ← random integer with 0 ≤ j ≤ a.length
if j = a.length
a.append(source.next)
else
a.append(a[j])
a[j] ← source.next
源不断的进来。链接:http://en.wikipedia.org/wiki/Fisher-Yates_shuffle
To initialize an array a of n elements to a randomly shuffled copy of source
, both 0-based:
a[0] ← source[0]
for i from 1 to n − 1 do
j ← random integer with 0 ≤ j ≤ i
a[i] ← a[j] //这里是不是应该是当 j < i时 a[i] = a[j] a[j] = source[i]
a[j] ← source[i] //这里是当 j == i时
To initialize an empty array a to a randomly shuffled copy of source whose
length is not known:
while source.moreDataAvailable
j ← random integer with 0 ≤ j ≤ a.length
if j = a.length
a.append(source.next)
else
a.append(a[j])
a[j] ← source.next