何をしているか
ランダムで担当者を決めることができる抽選機能をGASで実装中
困っていること
重複のない乱数配列を作成することには成功したが
先頭が一致してしまうことがあり、それをどうにか避けたい
どういうことか
現状のコード
(こちらを参考にさせていただきました。参考URL:https://pisuke-code.com/js-create-non-overlap-randoms/)
// 重複チェック用配列 var randoms = []; // 最小値と最大値 var min = 1, max = 6; // min以上max以下の整数値の乱数を返す function intRandom(min, max){ return Math.floor(Math.random() * (max - min + 1)) + min; } // 重複チェックしながら乱数作成 for(i = min; i <= max; i++){ while(true){ var tmp = intRandom(min, max); if(!randoms.includes(tmp)){ randoms.push(tmp); break; } } } //抽選には乱数配列の先頭だけを扱う // この数字を元にspreadsheetの担当者を割り出すため var row = randoms[0] ... .. // 以下に担当者割り振りのロジックが続いていく...
console.log(randoms);
とし、
何度か実行すると以下のようにランダムな配列が作成できることが確認できます。
1回目... [1.0, 2.0, 5.0, 6.0, 4.0, 3.0] 2回目... [6.0, 1.0, 3.0, 6.0, 5.0, 2.0]
randoms[0]が連続で実行すると前後で一致してしまう場合がある・・・
例えば以下のようになります。
1回目... [1.0, 2.0, 5.0, 6.0, 4.0, 3.0] 2回目... [1.0, 6.0, 3.0, 4.0, 5.0, 2.0]
知りたいこと
ランダムな乱数配列はできたものの、実際に取りたい値はrandoms[0]
のため
連続実行時に1.0~6.0
の数字をランダムで出したいのですが先頭が一致してしまっていると意味がない・・・
GASを使用して前回実行したデータと現在の実行データの値が一致しているかの判定を取る必要があるかと思うのですが
それらの方法が分からず、
どのように実装すれば良いかが手が動かず、こちらに投稿させていただきました。
アドバイスなどご教示いただけますと幸いです。
回答2件
あなたの回答
tips
プレビュー