C#
C#. Как сгенерировать случайное число в диапозоне, исключающее одно число. C#
Пример: нужно получить случайное число в диапозоне (0;10), но брать 5 нельзя. Как это реализовать?
Чтобы было равномерное распределение в диапазоне [0;10] за исключением пятёрки, можно сделать так вот, например (с массивом размера n и аккуратным выводом всех его элементов):
using System;
namespace New_Project
{ class Program
{ static void Main()
{ int l = 0, m, n; Console.Write("n: ");
n = Convert.ToInt32(Console.ReadLine());
int [] A = new int [n];
Random rnd = new Random();
for (m = 0; m < n; m++)
{ A[m] = rnd.Next(0, 10); if (A[m] >= 5)
A[m]++; Console.Write(String.Format
("{0,3:d}", A[m])); l++; if (l == 16)
{ l = 0; Console.WriteLine(); } } } } }

using System;
namespace New_Project
{ class Program
{ static void Main()
{ int l = 0, m, n; Console.Write("n: ");
n = Convert.ToInt32(Console.ReadLine());
int [] A = new int [n];
Random rnd = new Random();
for (m = 0; m < n; m++)
{ A[m] = rnd.Next(0, 10); if (A[m] >= 5)
A[m]++; Console.Write(String.Format
("{0,3:d}", A[m])); l++; if (l == 16)
{ l = 0; Console.WriteLine(); } } } } }

Бери числа от 1 до 9. И если == 5, то заменить на 10
1. Кидать до тех пор, пока не будет что-то другое, кроме 5.
2. Если нужно целое, то кинуть от 1 до 8 (если края диапазона т. е. 0 и 10 не включаются), при этом если выпало 5 и более - прибавить 1.
2. Если нужно целое, то кинуть от 1 до 8 (если края диапазона т. е. 0 и 10 не включаются), при этом если выпало 5 и более - прибавить 1.
Сергей Данилов
Я думал о такой логике, просто интерено, есть ли уже готовый и реализованный метод для этого
again:
Random random = new Random();
int a = random.Next(1,10);
if (a == 5)
{
goto again;
}
Console.WriteLine(a);
проблем то)
Random random = new Random();
int a = random.Next(1,10);
if (a == 5)
{
goto again;
}
Console.WriteLine(a);
проблем то)
Сергей Данилов
Прикинь, если твой рандомайзер выдаст 5, 5, 5, 5 и тд. 1млн раз
using System;
namespace restless
{
class Program
{
static void Main(string[] args)
{
int[] arr = { 1, 2, 3, 4, 6, 7, 8, 9, 10 };
Console.WriteLine(arr[new Random().Next(0, arr.Length)]);
}
}
}
namespace restless
{
class Program
{
static void Main(string[] args)
{
int[] arr = { 1, 2, 3, 4, 6, 7, 8, 9, 10 };
Console.WriteLine(arr[new Random().Next(0, arr.Length)]);
}
}
}
Похожие вопросы
- Как сгенерировать случайные числа в C#?
- C#: Умножения чисел(чисел в строках) больших Int64 MaxValue без использования System.Numerics и BigInteger
- Программирование на C# - целые числа
- Как оптимизировать вычисление числа П? C#
- [c#] как найти все простые делители числа, ответ в массиве int
- Стоит ли дальше учить C#?
- Программирование на C Sharp (C#)
- Сегодня начал учить c#, решил сделать калькулятор простой и столкнулся с такой ошибкой при компиляции, хелпуйте.
- Что лучше C# или C++?
- На вход алгоритма подаётся натуральное число N. Алгоритм строит по нему новое число R следующим образом