シャッフル(シャッフル)
あなたがしなければならない、あなたはトランプの行の順序を持っていると仮定すると、不規則な配列に、元の順序を作るリオーダーです。
- 次のようにカードの初期順序は、
ソートシャッフル(シャッフルソート)
ステップ
- トランプごとに乱数を生成します
- 各トランプの下で乱数に従ってソートカードを再生します
例
- 最初のカード
- ポーカー乱数を追加します。
- 乱数がポーカーにソートされています
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;
}
}
機能
- 効果的な順序はランダム化
- のタイムライン内に完了することができます