#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;
}