teratail header banner
teratail header banner
質問するログイン新規登録

質問編集履歴

1

文章の追加

2021/07/31 04:12

投稿

Hiroo0121
Hiroo0121

スコア2

title CHANGED
File without changes
body CHANGED
@@ -3,6 +3,33 @@
3
3
  問題を変数 n で管理しており、0~9 までのいずれかの数字が入力されると対応した問題が出題されるのですが、
4
4
  nに対して 0~9 で なおかつ10回の処理以内に重複をしないようにするにはどうすればよいでしょうか。
5
5
 
6
+ 下記のURLを参照にPHPを組んだのですが
7
+ https://pisuke-code.com/php-create-non-overlap-randoms/
8
+
9
+ /** 乱数用配列 */
10
+ $rands = [];
11
+ /** 乱数の範囲は1~10 */
12
+ $min = 1; $max = 10;
13
+
14
+ for($i = $min; $i <= $max; $i++){
15
+ while(true){
16
+ /** 一時的な乱数を作成 */
17
+ $tmp = mt_rand($min, $max);
18
+
19
+ /*
20
+ * 乱数配列に含まれているならwhile続行、
21
+ * 含まれてないなら配列に代入してbreak
22
+ */
23
+ if( ! in_array( $tmp, $rands ) ){
24
+ array_push( $rands, $tmp );
25
+ break;
26
+ }
27
+ }
28
+ }
29
+
30
+ $randsを$nに変換してもエラーがでてしまいます。
31
+
32
+
6
33
  また不正防止のために、ブラウザバックをしたときにエラーもしくは特定のページに飛ぶようにしたいのですが、
7
34
  PHPではなくjavascriptでしか方法はないのでしょうか。
8
35