乱数を用いて-1または1を生成する方法として、以下のようなコードが挙げられますが、数学を使ってもっと高速な生成方法はないでしょうか?
javascript
1function myRand() { 2 if (random() < 0.5) { 3 return -1; 4 } else { 5 return 1; 6 } 7}
気になる質問をクリップする
クリップした質問は、後からいつでもMYページで確認できます。
またクリップした質問に回答があった際、通知やメールを受け取ることができます。
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
回答6件
0
知らない言語だから明確なことを言えませんが,
仮に1回の乱数取得で N bit の値を取得できるとしたら,それを N 回分の結果として使うことができると思われ,
乱数取得処理が遅い場合には,毎回乱数を取得するよりも早い可能性もあるかな? とか.
(ダメならその旨をコメントで明記する形で低評価願う)
投稿2021/08/20 01:24
総合スコア12037
0
数学を使ってもっと高速な生成方法はないでしょうか?
現実問題としては、ご提示の方法で十分な速度が出るのではないかと考えます。
乱数生成自体が相応の負荷を伴う処理ですので、相対的に条件分岐1つは大した負荷にはならないと予想されます。
投稿2021/08/19 14:23
総合スコア146233
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
0
おもしろそうなんでやってみました。
javascript
1const x = [-1,1][Math.floor(Math.random() + 0.5)] 2console.log(x)
投稿2021/08/19 20:49
総合スコア7466
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
0
ベストアンサー
投稿2021/08/19 13:46
編集2021/08/19 15:57退会済みユーザー
総合スコア0
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
0
function myRand() {
return 1;
}
これで超高速で1が生成できます
投稿2021/08/19 13:35
総合スコア88088
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2021/08/19 13:38
2021/08/19 13:42
2021/08/19 13:47
2021/08/19 13:50
退会済みユーザー
2021/08/19 23:13
2021/08/19 23:16
退会済みユーザー
2021/08/19 23:16
2021/08/19 23:19
退会済みユーザー
2021/08/19 23:20
2021/08/19 23:21
2021/08/19 23:31 編集
2021/08/20 03:45
あなたの回答
tips
太字
斜体
打ち消し線
見出し
引用テキストの挿入
コードの挿入
リンクの挿入
リストの挿入
番号リストの挿入
表の挿入
水平線の挿入
プレビュー
質問の解決につながる回答をしましょう。 サンプルコードなど、より具体的な説明があると質問者の理解の助けになります。 また、読む側のことを考えた、分かりやすい文章を心がけましょう。
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2021/08/20 02:11
2021/08/20 02:28