配列の中に配列の組み合わせを作り、それをランダムにして被ることなく取り出したいのですが、HTMLで記述したボタンを押すごとにrand()関数が実行され、またシャッフルされて被ってしまいます。どうすれば解決できるでしょうか?
HTML
1<!DOCTYPE html> 2<html lang="ja"> 3<head> 4 <meta charset="UTF-8"> 5 <title>index</title> 6</head> 7 8<body> 9 <p><input type="button" value="ランダム" onclick="rand()"></p> 10 11 <script src="js/jquery-3.4.1.min.js"></script> 12 <script src="js/index.js"></script> 13</body> 14 15</html> 16
JavaScript
1//ランダムな値を取得 2function rand() { 3 var movieList = [0, 1, 2, 3, 4, 5, 6]; 4 5 // 組み合わせの用意 6 var movieComb = []; 7 for (var i = 0; i < movieList.length; i++) { 8 for (var j = 0; j < movieList.length; j++) { 9 if (movieList[i] !== movieList[j]) { 10 movieComb.push([movieList[i], movieList[j]]); 11 } 12 } 13 } 14 15 movieComb = movieComb[Math.floor(Math.random() * movieComb.length)]; 16 console.log(movieComb); 17}
また、42個の組み合わせができますが、全ての組み合わせを表示させた後にalertを表示させたいのですが、どのようにすればよろしいでしょうか?
https://pisuke-code.com/js-create-non-overlap-randoms/
重複なしで乱数を生成させる方法を検索したところ、こんな記事がありましたので、試してみてはいかがでしょう?
回答3件
あなたの回答
tips
プレビュー