генерация случайных чисел, цикл и сохранение

#c#

#c#

Вопрос:

Как я могу реализовать это так, чтобы длина всегда составляла десять чисел, и как я буду хранить n и r, выполнять цикл 10 раз и также сохранять каждый цикл?

повторите цикл генератора случайных чисел 10 раз, чтобы создать 2×10 чисел из нескольких 10 цифр.

 namespace ConsoleApplication1
{
    class Program
    {
        static void Main()
        {

            F();
            F();
        }

        static Random _r = new Random();
        static void F()
        {

            int n = _r.Next();
            int r = _r.Next();

            Console.WriteLine(n);
            Console.WriteLine(r);
            Console.ReadLine();
        }
}
  

Комментарии:

1. цикл над чем? Вопрос крайне неясен.

2. извините, генератору случайных чисел необходимо выполнить цикл 10 раз, чтобы создать 2×10 кратных 10-значных чисел

Ответ №1:

Может быть, вы ищете что-то подобное?

Хотя я не в восторге от соглашений об именовании, я не уверен, к чему они применимы, поэтому не могу точно назвать их соответствующим образом сам…

 static int[] randomNumberArray0 = new int[10];
static int[] randomNumberArray1 = new int[10];
static Random random = new Random();

static void PopulateRandomNumberArrays()
{
    for (int i = 0; i < 10; i  )
    {
        randomNumberArray0[i] = random.Next();
        randomNumberArray1[i] = random.Next();
    }
}
  

Обновить:

Чтобы выполнить этот метод с последующим выводом значений позже, попробуйте следующее:

 static void PrintRandomNumberArrayValues(int[] array)
{
    for (int i = 0; i < array.Length; i  )
    { 
        Console.WriteLine("{0}", array[i]);
    }
    Console.WriteLine();
}

static void Main()
{
    PopulateRandomNumberArrays();

    PrintRandomNumberArrayValues(randomNumberArray0);
    PrintRandomNumberArrayValues(randomNumberArray1);

    Console.WriteLine("Press any key to exit...");
    Console.ReadKey();
}
  

Вывод будет выглядеть примерно так:

 2044334973
153458690
1271210885
734397658
746062572
162210281
1091625245
123317926
410432738
989880682

866647035
481104609
834599031
1153970253
94252627
1041485031
1934449666
414036889
1886559958
2083967380
  

Дальнейшее обновление:

Чтобы длина сгенерированных значений была ограничена 10 цифрами, это означает, что минимальное сгенерированное значение должно быть больше, чем 999999999 и, поскольку у int есть максимальное значение 2,147,483,647 , меньшее или равное этому, поэтому:

 for (int i = 0; i < 10; i  )
{
    randomNumberArray0[i] = random.Next(1000000000, int.MaxValue);
    randomNumberArray1[i] = random.Next(1000000000, int.MaxValue);
}
  

У меня такое чувство, что это все еще может не удовлетворять вашим потребностям, хотя, как я вижу, следующим шагом будет то, что числа должны быть представлены как 0000000001 , например — давайте посмотрим.

Еще одно обновление:

Как я и думал, значение numbers не должно быть ограничено нашим указанным диапазоном, а скорее всего, только выходные данные, отформатированные соответствующим образом; таким образом, генерация возвращается к моему первоначальному предложению, и печать изменяется таким образом:

 Console.WriteLine("{0:D10}", array[i]);
  

Комментарии:

1. Моя ошибка — отсутствуют static модификаторы: обновил ответ, чтобы отразить.

2. как мне заставить консольное приложение оставаться открытым и выводить два массива?

3. Обновил мой ответ, чтобы проиллюстрировать это.

4. Я вижу, это действительно было неясно в вашем первоначальном вопросе — пожалуйста, посмотрите мое последнее обновление.

5. Это проблема с форматированием, удалите ограничения на минимальное и максимальное значение random.Next и внутри PrintRandomNumberArrayValues используйте это: Console.WriteLine("{0:D10}", array[i]);

Ответ №2:

Я думаю, вы могли бы использовать список кортежей для хранения и возврата ваших результатов:

 static List<Tuple<int,int>> F()
{
    var results = new List<Tuple<int,int>> ();
    for (int i = 0; i < 10; i  )
    {
        results.Add(new Tuple<int, int>(_r.Next(), _r.Next()));
    }
    return results;
}