[解決済み] 0 以上 1 未満の rand()
2022-03-12 09:15:17
質問
そこで、以下のコードで0 < r < 1を作成します。
r = ((double) rand() / (RAND_MAX))
なぜ
r = ((double) rand() / (RAND_MAX + 1))
は-1 < r < 0になるのでしょうか?
RAND_MAX に 1 を足しても 1 < r < 2 にはならないのですか?
編集: 式中の整数のオーバーフローという警告が表示されました。
という行があるので、それが問題なのかもしれません。私はただ
cout << r << endl
で、確かに -1 から 0 の間の値が表示されます。
どのように解決するのですか?
これは完全に
実装に依存する
が、あなたが作業しているC++環境ではそう見えるようです。
RAND_MAX
と同じです。
INT_MAX
.
このため
RAND_MAX + 1
は未定義の(オーバーフローの)挙動を示し、次のようになります。
INT_MIN
. 最初のステートメントでは、(0 の間のランダムな #) を分割していましたが
INT_MAX
)/(
INT_MAX
)を生成し、値
0 <= r < 1
を分割しています。
INT_MAX
)/(
INT_MIN
) を生成します。
-1 < r <= 0
乱数を生成するために
1 <= r < 2
が必要です。
r = ((double) rand() / (RAND_MAX)) + 1
関連
-
[解決済み] テスト
-
[解決済み】C-stringを使用すると警告が表示される。"ローカル変数に関連するスタックメモリのアドレスが返される"
-
[解決済み] string does not name a type Errorが発生するのはなぜですか?
-
[解決済み】エラー。引数リストに一致するコンストラクタのインスタンスがない
-
[解決済み] 1ビットのセット、クリア、トグルはどのように行うのですか?
-
[解決済み] static_cast, dynamic_cast, const_cast, reinterpret_cast はいつ使うべきですか?
-
[解決済み] JavaScriptで2つの数値の間の乱数を生成する
-
[解決済み] 0から9までのランダムな整数を生成する
-
[解決済み] const int*、const int * const、int const *の違いは何ですか?
-
[解決済み】大文字と数字を含むランダムな文字列の生成
最新
-
nginxです。[emerg] 0.0.0.0:80 への bind() に失敗しました (98: アドレスは既に使用中です)
-
htmlページでギリシャ文字を使うには
-
ピュアhtml+cssでの要素読み込み効果
-
純粋なhtml + cssで五輪を実現するサンプルコード
-
ナビゲーションバー・ドロップダウンメニューのHTML+CSSサンプルコード
-
タイピング効果を実現するピュアhtml+css
-
htmlの選択ボックスのプレースホルダー作成に関する質問
-
html css3 伸縮しない 画像表示効果
-
トップナビゲーションバーメニュー作成用HTML+CSS
-
html+css 実装 サイバーパンク風ボタン
おすすめ
-
[解決済み】構造体のベクター初期化について
-
[解決済み】LLVMで暗黙のうちに削除されたコピーコンストラクタの呼び出し
-
[解決済み】'cout'は型名ではない
-
[解決済み】C++プログラムでのコンソールの一時停止
-
[解決済み】「std::operator」で「operator<<」にマッチするものがない。
-
[解決済み] 式はクラス型を持つ必要があります。
-
[解決済み] 非静的データメンバの無効な使用
-
[解決済み】指定範囲内の乱数で配列を埋める(C++)
-
[解決済み] 解決済み] `pthread_create' への未定義の参照 [重複] [重複
-
[解決済み】C++ - ステートメントがオーバーロードされた関数のアドレスを解決できない。