0
点赞
收藏
分享

微信扫一扫

[Algorithm]随机发牌


从card[51]开始扁历,把当前的card 与card[rand.nextInt(51)]交换,遍历一次后,也就随机得差不多了


intshuffle,思路就是遍历数组,在剩下的元素里再随机取一个元素,然后再在剩下的元素里再随机取一个元素。每次取完元素后,我们就不会让这个元素参与下一次的选取。

an array       a       of n elements (indices       0..n      -1):     

for i       from n −       1 downto       1       do

random       integer       with       0

a[j]       and       a[i]

0 ≤ j ≤ i,包括j=i的情况,因为可能洗牌后某个牌未发生交换,比如第51张牌还是原来的第51张牌。

public void randomCards(){     

int[] data =       new       int[      52];     

new

for (      int i =       0; i < data.length; i++)     

      		data[i] = i;     



for (      int i = data.length -       1; i >       0; i--) {     

int temp = random.nextInt(i+      1);       //产生 [0,i] 之间的随机数

      		swap(data,i,temp);     

      	}     

      }


举报

相关推荐

0 条评论