毎回正確にランダムでなければならないC#の乱数?

私は精神的な数学のクイズゲームの乱数を生成しようとしています。しかし、私は間違ったことをやっていると思います。私のコードを修正するのを手伝ってください。私のコードが間違っている理由を説明してください。前もって感謝します!

 using System;
    using System.Collections.Generic;
    using System.Linq;
    using System.Text;


    namespace MindTraining
    {
        class Program
        {
            static void Main(string[] args)
            {

                Console.WriteLine("Enter the digits of first number ");
                int a=int.Parse(Console.ReadLine());
                Console.WriteLine("Enter the digits of second number");
                int b = int.Parse(Console.ReadLine());

                Random RandomClass = new Random(DateTime.UtcNow.Second);

                int RandomNumber = RandomClass.Next(10^(a-1), 10^a);
                Console.WriteLine(RandomNumber);
    }


    }

}

私が達成しようとしているのは、数字aの桁数と数字bの桁数を入力したいのです

次に、プログラムは乱数を生成し、ユーザーはaに対して2を入力し、次にプログラムは0〜10の間の数を生成する必要があります(乱数、毎回異なる)

ユーザーがaを3、10を100、

bの場合と同様のこと、そしてproduct.Numberの計算は、プログラムの実行中に2回以上繰り返さないでください。

さて、私のコードを変更しました。

    using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;


namespace MindTraining
{
    class Program
    {
        static void Main(string[] args)
        {

            Console.WriteLine("Enter the digits of first number ");
            int a=int.Parse(Console.ReadLine());
            Console.WriteLine("Enter the digits of second number");
            int b = int.Parse(Console.ReadLine());

            Random RandomClass = new Random(DateTime.UtcNow.Second);
            double num1=Math.Pow(10,a-1);
            double num2=Math.Pow(a,1);
            int num3 = Convert.ToInt32( num1);
            int num4=Convert.ToInt32(num2);

            int RandomNumber = RandomClass.Next(num3,num4);
            Console.WriteLine(RandomNumber);
}}

//しかし、まだ結果が得られていない、私はエラーをスローする、

これは働いた!

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;


namespace MindTraining
{
    class Program
    {
        static void Main(string[] args)
        {

            Console.WriteLine("Enter the digits of first number ");
            int a=int.Parse(Console.ReadLine());
            Console.WriteLine("Enter the digits of second number");
            int b = int.Parse(Console.ReadLine());

            Random RandomClass = new Random();
            double num1=Math.Pow(10,(a-1));
            double num2=Math.Pow(10,(a));
            int num3 = Convert.ToInt32( num1);
            int num4=Convert.ToInt32(num2);

            int RandomNumber = RandomClass.Next(num3,num4);
            Console.WriteLine(RandomNumber);
}


}






        }
4
「まったくランダム」なもの(「毎回違う」というようなものを意味していると仮定しています)を望むなら、なぜ60種類の可能なシード値に制限していますか?
追加された 著者 Joe White,
このコードが正確に何を期待しているのかわからないと、間違っていることを伝えるのは難しいです。
追加された 著者 Joel Etherton,
「プログラムランタイム中に2回以上繰り返さないでください」は「正確にランダム」とは互換性がありません。本当にランダムなシーケンスは、常に同じ値の任意の長い繰り返しを持つことができます。それはあなたの問題の原因ではありませんが、理解する価値があります。
追加された 著者 Dan Bryant,

4 答え

^はC#のパワー演算子への昇格ではありません。 これには、 Math.Pow を使用してください。

1
追加された
ありがとう、私はそれを知らなかった。
追加された 著者 MADAN RAWAT,

C#の ^ 演算子は、指数関数ではなく、排他的論理和(XOR)を意味します。詳細については、 http://www.dotnetperls.com/xor をご覧ください。 Math.Pow を試してください。代わりに。

1
追加された
私はこれが "偉大な心は似ていると思う"か "愚かなことはまれである"かどうかは分かりません。
追加された 著者 Rich O'Kelly,
ありがとう、より多くの助けを感謝します。
追加された 著者 MADAN RAWAT,

TRULY 乱数を生成している間は、その数が常に異なっているとは思いません。したがって、毎回異なる番号を追加する必要があります。

0
追加された

限られているシード値を使用する理由がありますか?なぜ使わないの?

Random RandomClass = new Random();

それはあなたのオブジェクトのデフォルトの時間ベースのシード値を取るか?

また、Math.pow(base、exp)を使ってRandom.next()呼び出しの範囲を次のように計算します:

int RandomNumber = RandomClass.Next((int)Math.Pow(10,(a-1)), (int)Math.Pow(10,a));

コードでは、エラーが発生します。これは、

double num2=Math.Pow(a,1);

自身を返します。したがって、Random.next()のあなたのmaxvalueは、論理的に間違っているminvalueよりも小さいです。これはエラーです。私はあなたのコードを実行しています。それは、最後に閉じ括弧がありません。

また、完全な乱数ジェネレータなどは存在しないことを認識しなければなりません。これらはすべて疑似乱数発生器です。彼らは、数字の行の数字の正規分布に従います。したがって、生成されたすべての数値を保存してチェックしない限り、1回の実行で数値が2回以上生成されないことは実現不可能です。これは最後の手段でなければならず、唯一の厳しい要件です。

0
追加された
こんにちはダーニール、私はこれを試みた。これは、RandomClass.Nextはint型の引数をとり、math.powはdouble型の引数を与えるので、これは動作しません。あなたの推薦に従って、私のコードを編集しました。フォローアップしてください。
追加された 著者 MADAN RAWAT,
オハイオ州大丈夫..そう、私の悪い、明示的に型キャストしてください。
追加された 著者 darnir,