シャッフル(シャッフル)

シャッフル(シャッフル)

あなたがしなければならない、あなたはトランプの行の順序を持​​っていると仮定すると、不規則な配列に、元の順序を作るリオーダーです。

  • 次のようにカードの初期順序は、

トランプ

ソートシャッフル(シャッフルソート)

ステップ

  • トランプごとに乱数を生成します
  • 各トランプの下で乱数に従ってソートカードを再生します

  • 最初のカード

トランプ

  • ポーカー乱数を追加します。

ポーカー乱数+

  • 乱数がポーカーにソートされています

+トランプをソートする乱数

JAVAによるコード

static public void shuffle(int a[]){
        TreeMap<Float,Integer> tm=new TreeMap<>();//使用Float(随机数)--Integer(数字)键值对的map来存储随机数和数字的组合
                             //同时利用Treemap对键的排序功能对随机数进行排序
        Random r=new Random();//创建Random对象
        for(int i=0;i<a.length;i++)//按顺序给每个数字一个随机数,并添加到Treemap
            tm.put(r.nextFloat(),a[i]);
        int i=0;
        for(Float key:tm.keySet()) {//从Treemap中按顺序取出值,并放入到原数组中
            a[i] = tm.get(key);
            i++;
        }
    }

機能

  • 乱数ジェネレータのランダム性によってランダム性をソート
  • 大規模改造に直面したとき、実際には比較的時間のかかるソートです

クヌースのシャッフル

ステップ

  • 各反復iは、ランダムI-カード交換でカードに0-iのトランプから選択します

  • 私は反復i
  • 0-Iの間のRランダムに生成された数

JAVAによるコード

static public void kunthShuffle(int[] a){
        Random r=new Random();//创建Random对象
        int temp;//交换临时变量
        for(int i=1;i<a.length;i++){//显而易见下标为0的数字不用交换
            int ri=r.nextInt(i+1);//随机生成的0-i的下标
            temp=a[ri];//交换下标为i和下标为ri的两个数
            a[ri]=a[i];
            a[i]=temp;
        }
    }

機能

  • 効果的な順序はランダム化
  • のタイムライン内に完了することができます

おすすめ

転載: www.cnblogs.com/redo19990701/p/11282472.html