C# - 「ランダム」な倍精度浮動小数点数は、辞書挿入で信頼性の高い衝突を作成します

フィリップ・スミ

以下のスニペットは、ランダムな double をディクショナリに追加します。これが確実に失敗したことに驚きました。20K ~ 50K の挿入後の辞書での魔女の衝突 (走行距離は異なる場合があります)。

このパターンはランダムなのか、それともすぐに重複を引き起こすハッシュなのか? 以下のコードはほとんど実行されません。はるかに大きいハッシュ範囲では、次のようになるとは思いもしませんでした:

var rnd = new Random();
var dict = new Dictionary<double, int>();
for (int i = 0; i< 100000; i++)
{
    var nbr = rnd.NextDouble();
    dict.Add(nbr, i); //fails at some point
}
リー

これは誕生日のパラドックスによるものです。Random は 32 ビットのシードを使用しており、表から、約 77k の値を生成した後、32 ビット空間内で 50% の確率で衝突が発生することがわかります。

この記事はインターネットから収集されたものであり、転載の際にはソースを示してください。

侵害の場合は、連絡してください[email protected]

編集
0

コメントを追加

0

関連記事

分類Dev

C#でランダムな浮動小数点数を生成します

分類Dev

CおよびC ++で浮動小数点数/倍精度浮動小数点数の除算剰余演算がないのはなぜですか?

分類Dev

C#のJsonArrayから整数または倍精度浮動小数点数を読み取ります

分類Dev

c++ で IF ステートメントのない数値システム間で浮動小数点数をラップしますか?

分類Dev

C#での浮動小数点/倍精度入力の検証

分類Dev

C ++での浮動小数点数の完全な精度の表示?

分類Dev

Cの予期しない出力でintに浮動小数点数

分類Dev

C#の0と1の間のランダムなバイト配列からランダムなdouble(浮動小数点)値を取得しますか?

分類Dev

C ++標準は、浮動小数点数の表現について何かを指定していますか?

分類Dev

GDBはCスタイルの16進浮動小数点数を正しく解析できますか?

分類Dev

Cでの倍精度/浮動小数点変換

分類Dev

C ++の浮動小数点数(double)で精度が失われる

分類Dev

C ++で小数点以下n桁の浮動小数点数を丸めるより良い方法はありますか?

分類Dev

浮動小数点数Cを逆にします

分類Dev

CおよびC ++コンパイラは、浮動小数点数の等式の決定をどのように実装しますか?

分類Dev

C#の整数除算が浮動小数点数ではなく整数を返すのはなぜですか?

分類Dev

Cでユーザーが入力した精度を失うことなく、浮動小数点数を文字列に変換するにはどうすればよいですか?

分類Dev

C ++では、1行から文字列、浮動小数点数、整数の入力をどのように取得しますか?

分類Dev

Cで浮動小数点数をchar配列に変換します

分類Dev

整数から浮動小数点数への精度の低下はC ++でどのように定義されていますか?

分類Dev

cコードは、浮動小数点数を使用するTurbo C ++では機能しません

分類Dev

4つのmodbusレジスタ(各16ビット)をCで倍精度浮動小数点数に変換するにはどうすればよいですか?

分類Dev

C#での拡張精度浮動小数点の危険性

分類Dev

.datファイルの整数と浮動小数点数をC言語で保存します

分類Dev

c で浮動小数点数に使用する必要がある小数点以下の桁数をどのように決定しますか

分類Dev

文字列として入力された分数をCで浮動小数点数に変換するにはどうすればよいですか?

分類Dev

C#での奇妙な浮動小数点数演算操作

分類Dev

Java / C#での浮動小数点計算の大幅な精度の違い

分類Dev

大きな静的浮動小数点配列を更新するプログラムがCよりもRustの方が遅いのはなぜですか?

Related 関連記事

  1. 1

    C#でランダムな浮動小数点数を生成します

  2. 2

    CおよびC ++で浮動小数点数/倍精度浮動小数点数の除算剰余演算がないのはなぜですか?

  3. 3

    C#のJsonArrayから整数または倍精度浮動小数点数を読み取ります

  4. 4

    c++ で IF ステートメントのない数値システム間で浮動小数点数をラップしますか?

  5. 5

    C#での浮動小数点/倍精度入力の検証

  6. 6

    C ++での浮動小数点数の完全な精度の表示?

  7. 7

    Cの予期しない出力でintに浮動小数点数

  8. 8

    C#の0と1の間のランダムなバイト配列からランダムなdouble(浮動小数点)値を取得しますか?

  9. 9

    C ++標準は、浮動小数点数の表現について何かを指定していますか?

  10. 10

    GDBはCスタイルの16進浮動小数点数を正しく解析できますか?

  11. 11

    Cでの倍精度/浮動小数点変換

  12. 12

    C ++の浮動小数点数(double)で精度が失われる

  13. 13

    C ++で小数点以下n桁の浮動小数点数を丸めるより良い方法はありますか?

  14. 14

    浮動小数点数Cを逆にします

  15. 15

    CおよびC ++コンパイラは、浮動小数点数の等式の決定をどのように実装しますか?

  16. 16

    C#の整数除算が浮動小数点数ではなく整数を返すのはなぜですか?

  17. 17

    Cでユーザーが入力した精度を失うことなく、浮動小数点数を文字列に変換するにはどうすればよいですか?

  18. 18

    C ++では、1行から文字列、浮動小数点数、整数の入力をどのように取得しますか?

  19. 19

    Cで浮動小数点数をchar配列に変換します

  20. 20

    整数から浮動小数点数への精度の低下はC ++でどのように定義されていますか?

  21. 21

    cコードは、浮動小数点数を使用するTurbo C ++では機能しません

  22. 22

    4つのmodbusレジスタ(各16ビット)をCで倍精度浮動小数点数に変換するにはどうすればよいですか?

  23. 23

    C#での拡張精度浮動小数点の危険性

  24. 24

    .datファイルの整数と浮動小数点数をC言語で保存します

  25. 25

    c で浮動小数点数に使用する必要がある小数点以下の桁数をどのように決定しますか

  26. 26

    文字列として入力された分数をCで浮動小数点数に変換するにはどうすればよいですか?

  27. 27

    C#での奇妙な浮動小数点数演算操作

  28. 28

    Java / C#での浮動小数点計算の大幅な精度の違い

  29. 29

    大きな静的浮動小数点配列を更新するプログラムがCよりもRustの方が遅いのはなぜですか?

ホットタグ

アーカイブ