Кездейсоқ санды қалай құруға болады, ол жиынтықтың бірі болып табылады [0,5,10,15]?

Мен төмендегілерді қолданамын:

Random r = new Random(); 
var a = r.Next(9)

0-9 арасындағы кездейсоқ санды құру.

Дегенмен, қазір мен кездейсоқ кездегі сандардың бірін жасау керек: 0,5,10,15

Мұны жоғарыдағы сандарды таңдау үшін ғана өзгертуім мүмкін бе?

0

7 жауаптар

Random r = new Random(); 
var a = r.Next(4) * 5;

Шабуыл жасайды. Аргумент айрықша жоғарғы шекара екенін ескеріңіз, сондықтан ол ешқашан жасалмайды. Сіздің код үлгісі 0 мен 8 арасында қалыптасады.

Егер сізге басқа сандар жиынтығы қажет болса, төмендегілерді орындауға болады:

int[] possible = new int[] { 0, 5, 10, 15 };
Random r = new Random(); 
int a = possible[r.Next(possible.length)];
6
қосылды
Кішкентай адам, өздерінің жауаптарын арттыруға үміттенетін біреуден болуы мүмкін
қосылды автор dreamlax, көзі
Бұл Ричард Помпус ІІІ-нің жұмысы сияқты.
қосылды автор Jim Balter, көзі
Менің ойымша, олардың санының санын ескере отырып, менің ойымша. Өкінішке орай, біреу мұны істейтін.
қосылды автор Mike Precup, көзі
Сондай-ақ, мен де төмендеп кеттім. Түсіндіру? Бұл жерде үш лауазым ешқандай себепсіз төмендетілді.
қосылды автор Mike Precup, көзі
Random rnd = new Random();

//create a pre-defined list
int[] nums = new int[] {0, 5, 10, 15};

int rndNum = nums[rnd.Next(nums.Length)];

Тіпті циклда анықталған сандардың жиынтығынан жиі бір кездейсоқ санды жасау үшін қайталауға болады.

4
қосылды
@downvoter - түсініктеме?
қосылды автор PaRiMaL RaJ, көзі
@MikePrecup - жақсы синтаксис бекітілді!
қосылды автор PaRiMaL RaJ, көзі
Мен төмен түсіруші емеспін, бірақ бұрын синтаксистік қателерге байланысты болдым. Онда сізде бірнеше адам бар, сондықтан мүмкін. EDIT: TGH соққыға ұшырады, мен де ойлаймын. Бұл тақ пост. EDIT2: Және мен де. Бұл қулық не?
қосылды автор Mike Precup, көзі
Next дәлелінің ерекше жоғарғы шегі екенін ескеріңіз.
қосылды автор Mike Precup, көзі

0 мен 3 аралығындағы кездейсоқ санды жасаңыз, содан кейін оны индекс ретінде массив ретінде пайдаланыңыз:

Мұндай нәрсе (псевдокод):

var nums = [0, 5, 10, 15];
return nums[new Random().Next(4)];

Немесе егер ол шын мәнінде қарапайым болса, 5-ге көбейеді; оны көбейтіңіз:

return new Random().Next(4) * 5;
1
қосылды
Келесі (3) тек 0, 1 немесе 2 мәнін береді
қосылды автор Jim Balter, көзі

Ия. Төрт элементті төрт элементтің массасына салыңыз. Содан кейін 0-3 аралығындағы кездейсоқ сандарды жасаңыз және массив индекстеу үшін пайдаланыңыз

1
қосылды
@TGH - Мен кез келгенін төмендетті!
қосылды автор PaRiMaL RaJ, көзі
Бұл @ AppDeveloper шешімі сияқты бірдей. Тек код жоқ.
қосылды автор dotNET, көзі
неге дауыс төмен?
қосылды автор TGH, көзі
const int iterator = 5;
const int upperBound = 15;

var possibleValues = (from n in Enumerable.Range(0, upperBound + 1)
                      where n % iterator == 0
                      select n).ToArray(); 

Random r = new Random();
var a = possibleValues[r.Next(possibleValues.Length)];
0
қосылды
% Қадамды қамтымайтын LINQ шешімі бар ма?
қосылды автор syclee, көзі
Linq шешімін тапты. DId Range туралы білмейді, жақсы
қосылды автор syclee, көзі
Linq шешімі неге ұқсас болады?
қосылды автор syclee, көзі
иә сіз дәл осындай боласыз. Мен хаха деп ойладым
қосылды автор syclee, көзі
10 және 15 арасындағы үтірді қосыңыз.
қосылды автор dotNET, көзі
if (i% iterator == 0) - бұл ierator арқылы i көбейтілу (жақсы). Немесе, талғампаздық үшін, сіз Линкпен бір жолмен айналысуыңыз мүмкін.
қосылды автор Jim Balter, көзі
Өте қымбат..
қосылды автор AgentFire, көзі
public static IEnumerable Range(int count, int start = 0, int step = 1)
{
    for (int i = start; i < count; i++)
        yield return i;
}

var arr = Range(4, 0, 5).ToArray();//0, 5, 10, 15.
0
қосылды
  Random r = new Random();
  var a = r.Next(4)*5;
0
қосылды