回答編集履歴
1
回答誤りについて訂正。
test
CHANGED
@@ -1,21 +1,77 @@
|
|
1
|
-
バッチファイルの先頭に
|
1
|
+
~~バッチファイルの先頭に~~
|
2
|
+
|
3
|
+
~~setlocal enabledelayedexpansion~~
|
4
|
+
|
5
|
+
~~を入れて試してみて下さい。~~
|
2
6
|
|
3
7
|
|
4
8
|
|
5
|
-
|
9
|
+
~~<参考>~~
|
6
10
|
|
7
|
-
|
11
|
+
~~■ 指定長・個数のランダム数字列生成バッチ(Windows編)~~
|
8
12
|
|
9
|
-
|
13
|
+
~~[https://qiita.com/real_yaruo/items/8d7c5abe37a73e2fc408](https://qiita.com/real_yaruo/items/8d7c5abe37a73e2fc408)~~
|
10
14
|
|
11
15
|
|
12
16
|
|
13
|
-
|
17
|
+
回答に誤りがあった為、訂正しておきます。(コメントで情報提供いただいた方ありがとうございます。)
|
14
18
|
|
15
19
|
|
16
20
|
|
17
|
-
|
21
|
+
`enabledelayedexpansion`(遅延環境変数)は `%RANDOM%` とは本質的に関係ありません。
|
18
22
|
|
19
|
-
|
23
|
+
(Qiita 記事に書いてあったのは、`for`文の中で `%RANDOM%` を使う場合に必要ということでした。)
|
20
24
|
|
25
|
+
|
26
|
+
|
27
|
+
> 実行してみると、ターミナルを起動してから一回目は8しか出ません
|
28
|
+
|
29
|
+
|
30
|
+
|
31
|
+
同じ値が出ている原因ですが、`%RANDOM%` の結果として、似通った値が返ってきていることが原因です。
|
32
|
+
|
33
|
+
以下は `%RANDOM%` の出力例になります。
|
34
|
+
|
35
|
+
|
36
|
+
|
37
|
+
19:05:06.97 / 21763
|
38
|
+
|
39
|
+
19:05:07.22 / 21767
|
40
|
+
|
41
|
+
19:05:37.67 / 21865
|
42
|
+
|
43
|
+
|
44
|
+
|
45
|
+
この場合ですと、いずれの場合も%random%*11/32767の計算結果として7が出ることになります。
|
46
|
+
|
47
|
+
|
48
|
+
|
49
|
+
今回の用途(実行する度に壁紙を変える)であれば、余りを求めるのが良いと思われます。
|
50
|
+
|
51
|
+
変更前)set /a ran1=%random%*11/32767
|
52
|
+
|
53
|
+
変更後)set /a ran1=%random%%%11
|
54
|
+
|
55
|
+
|
56
|
+
|
57
|
+
> ターミナルを閉じないでもう一度実行するとちゃんと別の数字がでます。
|
58
|
+
|
59
|
+
|
60
|
+
|
61
|
+
(ターミナルとして PowerShell とコマンドプロンプトが選べるかと思いますが、ここではコマンドプロンプトを利用している想定で書かせて頂きます。)
|
62
|
+
|
63
|
+
|
64
|
+
|
65
|
+
乱数の元となるシードを cmd.exe の起動時に決定している為です。
|
66
|
+
|
67
|
+
同じプロセス内(cmd.exe内)では、シードが決定した後は、疑似乱数が正しく機能する為、実行する度にランダムな値が表示されます。
|
68
|
+
|
69
|
+
|
70
|
+
|
71
|
+
`%RANDOM%` がそれ程ランダムでない値を返す理由については下記ブログに記事がありましたので、興味がありましたら参照下さい。
|
72
|
+
|
73
|
+
|
74
|
+
|
75
|
+
■ As random as I wanna be: Why cmd.exe's %RANDOM% isn't so random
|
76
|
+
|
21
|
-
[https://
|
77
|
+
[https://devblogs.microsoft.com/oldnewthing/20100617-00/?p=13673](https://devblogs.microsoft.com/oldnewthing/20100617-00/?p=13673)
|