C# Náhodné číslo (od až po) – .NET – Fórum – Programujte.com
 x   TIP: Přetáhni ikonu na hlavní panel pro připnutí webu

C# Náhodné číslo (od až po) – .NET – Fórum – Programujte.comC# Náhodné číslo (od až po) – .NET – Fórum – Programujte.com

 

Gandy
~ Anonymní uživatel
8 příspěvků
10. 11. 2012   #1
-
0
-

Dobrý den. Potřeboval bych poradit jak získat náhodné číslo v určitém rozsahu (třeba od 0-100). A ještě lepší by bylo, kdyby šance získat větší číslo byla čím dál menší (jakože by bylo daleko pravděpodobnější, že získám číslo 5 než třeba 86). Předem děkuji.

Nahlásit jako SPAM
IP: 194.213.39.–
enro
~ Anonymní uživatel
17 příspěvků
10. 11. 2012   #2
-
+15
-
Hodnotné

   

Random nh = new Random();
int cislo = nh.Next(0, 101)

Takto získáš to číslo. Bacha, maximum musí být vždy o 1 větší.

A to s tou pravděpodobností .. vymysli si něco, nějaký algoritmus :))

Nahlásit jako SPAM
IP: 82.100.0.–
Gandy
~ Anonymní uživatel
8 příspěvků
10. 11. 2012   #3
-
0
-

#2 enro
Ten random jsem věděl, ale ten rozsah ne, takže super, díky moc  

Nahlásit jako SPAM
IP: 194.213.39.–
Gandy0
Duch
10. 11. 2012   #4
-
0
-

#2 enro
A ještě se ti hrozně omlouvám za ten mínus, překlikl jsem se.  

Nahlásit jako SPAM
IP: 194.213.39.–
enro
~ Anonymní uživatel
17 příspěvků
10. 11. 2012   #5
-
0
-

V pohodě :D

Nahlásit jako SPAM
IP: 82.100.0.–
Gandy0
Duch
10. 11. 2012   #6
-
0
-

A ještě bych měl jednu otázku, snad nebude vadit že už je to mimo téma. Chtěl bych udělat ve Visual Studiu Express Form s postranním menu, kde by se měnil pouze obsah (Střed v okně) díky poklepávání na tlačítka v menu. Chtěl jsem na sebe naskládat několik vrstev "Panel", které by se jenom zviditelňovali a zneviditelňovali, ale bylo by to dost nepřehledné. Trochu jsem googlil ale neumím tenhle problém v aj dostatečně popsat. Nejlepší by bylo, kdybych na každej obsah jednotlivě při tvorbě viděl (něco jakobych měl několik různejch formů) jen v závěru by se zobrazovali na stejném místě. Předem děkuji za radu.

Nahlásit jako SPAM
IP: 194.213.39.–
JoDiK
~ Anonymní uživatel
987 příspěvků
11. 11. 2012   #7
-
0
-

#6 Gandy
Formy nedělám, ale napadlo mně:

Vyrobit je vedle sebe s jednotným posunem v x-ové ose a pak jim na začátku programu provést změnu všech x-ových souřadnic o ten posun krát pořadí formu?

Nahlásit jako SPAM
IP: 88.103.233.–
nergal+1
Návštěvník
11. 11. 2012   #8
-
0
-

ked potrebujem ja vytvorit nahodne cisla tak aby boli mensie pravdepodobnejsie tak pouzivam nasledovny algoritmus v C# nerobim ale snad princip bude jasny :D

int max = 50; // chcem nahodne cislo od 0 do 50 :)

Random nh = new Random();
int r = nh.Next(0, 1000001);

double d = r/1000000.0;

int vysledok = d*d*max; //ak chces este pravdepodobnejsie mensie cisla tak d mozes dat az na tretiu alebo piatu...
Nahlásit jako SPAM
IP: 85.135.129.–
viem že neviem čo viem
ingiraxo+15
Grafoman
11. 11. 2012   #9
-
0
-

#8 nergal
zajimavý řešení, ale má dost vělkou pravděpodobnost na čísla do 40 (ze 100), tohle je vysledek z 1M pokusu.. na hodnotu 100 máš šanci 1:1000000 a hodnota 0 je podstate 1:10

// hodnota => počet
0 => 100454
1 => 41478
2 => 31704
3 => 26853
4 => 23509
5 => 21172
6 => 19673
7 => 18370
8 => 17228
9 => 16351
10 => 15446
11 => 14797
12 => 13844
13 => 13725
14 => 13206
15 => 12638
16 => 12224
17 => 11801
18 => 11685
19 => 11328
20 => 11030
21 => 10783
22 => 10525
23 => 10320
24 => 10019
25 => 9935
26 => 9544
27 => 9538
28 => 9216
29 => 9238
30 => 8990
31 => 8942
32 => 8738
33 => 8764
34 => 8502
35 => 8482
36 => 8281
37 => 8008
38 => 8079
39 => 7949
40 => 7960
41 => 7758
42 => 7742
43 => 7451
44 => 7457
45 => 7569
46 => 7301
47 => 7218
48 => 7196
49 => 6880
50 => 6931
51 => 7037
52 => 6937
53 => 6737
54 => 6907
55 => 6851
56 => 6657
57 => 6545
58 => 6500
59 => 6493
60 => 6409
61 => 6382
62 => 6466
63 => 6189
64 => 6037
65 => 6280
66 => 6223
67 => 6017
68 => 6111
69 => 5990
70 => 5999
71 => 5836
72 => 5720
73 => 5808
74 => 5745
75 => 5652
76 => 5961
77 => 5745
78 => 5715
79 => 5538
80 => 5448
81 => 5503
82 => 5462
83 => 5573
84 => 5503
85 => 5372
86 => 5406
87 => 5250
88 => 5360
89 => 5325
90 => 5310
91 => 5259
92 => 5155
93 => 5282
94 => 5121
95 => 5211
96 => 5105
97 => 5127
98 => 4861
99 => 5047
100 => 1
Nahlásit jako SPAM
IP: 213.168.183.–
Moje aplikace: http://ophite.cz
Tutoriály na: C#
ingiraxo+15
Grafoman
11. 11. 2012   #10
-
0
-

trochu jsem si dovolili vylepšit předchozí generátor na náhodnost a řekl bych, že ted je to celkem skoro vyrovnaný 

public static int GenerateProbability(Random r, int max, double koef)
{   
    max++;
    int limit = (int)(max * 10);
    int n = r.Next((int)(koef * limit), limit);
    double d = n / (double)limit;
    return (int)(r.NextDouble() * d * max);
}

// pouziti
// jinak "koef", je pevna nahodnost (0-1), kde 0.1 jsou hodnoty do 10 nejpravdepodobnejsi,
// pokud se nastavi 0.5, tak do 50 budou mnohem pravdepodobnejsi nez nad 50
int value = GenerateProbability(r, 100, 0.1);

s timto nastavením výsledek vypadá takto (opět pro 1M generací) 

// je videt, ze diky koef. jsou hodnoty od 0-10 mnohem pravdepodobnejsi a az
// potom se zecnou pomalu snizovat.. je pravda, ze ta 100 ma malou sanci, ale neni to tak
// strasny jako predtim :)
0 => 25298
1 => 25575
2 => 25536
3 => 25540
4 => 25521
5 => 25407
6 => 25447
7 => 25121
8 => 25315
9 => 25310
10 => 25123
11 => 24093
12 => 23006
13 => 21954
14 => 21270
15 => 20682
16 => 20113
17 => 19376
18 => 18534
19 => 18045
20 => 17547
21 => 16932
22 => 16722
23 => 16192
24 => 15696
25 => 15074
26 => 14546
27 => 14277
28 => 14042
29 => 13484
30 => 13072
31 => 12835
32 => 12456
33 => 11935
34 => 11722
35 => 11538
36 => 11213
37 => 10763
38 => 10614
39 => 10336
40 => 10020
41 => 9772
42 => 9408
43 => 9177
44 => 8970
45 => 8885
46 => 8496
47 => 8296
48 => 8124
49 => 7866
50 => 7489
51 => 7484
52 => 7105
53 => 7024
54 => 6767
55 => 6683
56 => 6369
57 => 6221
58 => 6167
59 => 6047
60 => 5527
61 => 5426
62 => 5322
63 => 4922
64 => 5092
65 => 4753
66 => 4583
67 => 4322
68 => 4224
69 => 4055
70 => 3928
71 => 3819
72 => 3692
73 => 3503
74 => 3320
75 => 3233
76 => 3012
77 => 2897
78 => 2689
79 => 2540
80 => 2543
81 => 2336
82 => 2235
83 => 2108
84 => 1902
85 => 1819
86 => 1672
87 => 1532
88 => 1410
89 => 1336
90 => 1176
91 => 1092
92 => 901
93 => 849
94 => 667
95 => 570
96 => 472
97 => 395
98 => 283
99 => 156
100 => 55

Nahlásit jako SPAM
IP: 213.168.183.–
Moje aplikace: http://ophite.cz
Tutoriály na: C#
Gandy0
Duch
11. 11. 2012   #11
-
0
-

#7 JoDiK
Ještě se vrátím k těm původním random hodnotám. Jak udělat, aby to po každé, když zmáčknu tlačítko přičetlo jinou náhodnou hodnotu? Jde o to že se vlastně po spuštění programu nastaví náhodná hodnota, která se pak pořád stejně přičítá.třeba 24 a pak se stále přičítá už jen 24. 

Nahlásit jako SPAM
IP: 194.213.39.–
ingiraxo+15
Grafoman
11. 11. 2012   #12
-
0
-

musíš si tu náhodnou hodnotu generovat vždy při stisku tlačítka?

Nahlásit jako SPAM
IP: 213.168.183.–
Moje aplikace: http://ophite.cz
Tutoriály na: C#
Gandy0
Duch
15. 11. 2012   #13
-
0
-

#12 ingiraxo
Ne, stačilo by kdyby to tu novou hodnotu při stisku jen přičetlo k proměnný.

Nahlásit jako SPAM
IP: 194.213.39.–
Radek Chalupa
~ Redaktor
+1
Super člen
15. 11. 2012   #14
-
0
-

#11 Gandy
Stačí v konstruktoru Random zadat nějakou "pokaždé jinou" hodnotu, např.

Random _r = new Random(System.Environment.TickCount);

Radek Chalupa
- vývoj software na zakázku
- školení programování (C/C++, WinAPI, ATL, COM, ActiveX, C#, NET Framework, MFC)
http://www.radekchalupa.cz

Nahlásit jako SPAM
IP: 213.220.211.–
Zjistit počet nových příspěvků

Přidej příspěvek

Toto téma je starší jak čtvrt roku – přidej svůj příspěvek jen tehdy, máš-li k tématu opravdu co říct!

Ano, opravdu chci reagovat → zobrazí formulář pro přidání příspěvku

×Vložení zdrojáku

×Vložení obrázku

Vložit URL obrázku Vybrat obrázek na disku
Vlož URL adresu obrázku:
Klikni a vyber obrázek z počítače:

×Vložení videa

Aktuálně jsou podporována videa ze serverů YouTube, Vimeo a Dailymotion.
×
 
Podporujeme Gravatara.
Zadej URL adresu Avatara (40 x 40 px) nebo emailovou adresu pro použití Gravatara.
Email nikam neukládáme, po získání Gravatara je zahozen.
-
Pravidla pro psaní příspěvků, používej diakritiku. ENTER pro nový odstavec, SHIFT + ENTER pro nový řádek.
Sledovat nové příspěvky (pouze pro přihlášené)
Sleduj vlákno a v případě přidání nového příspěvku o tom budeš vědět mezi prvními.
Reaguješ na příspěvek:

Uživatelé prohlížející si toto vlákno

Uživatelé on-line: 0 registrovaných, 68 hostů

Podobná vlákna

Náhodné číslo — založil Jakub Vojáček

Nahodne cislo — založil Zelenáč

Náhodné číslo — založil paking

Náhodné číslo — založil Xiaxo

Nahodne cislo — založil Marek Čačko

 

Hostujeme u Českého hostingu       ISSN 1801-1586       ⇡ Nahoru Webtea.cz logo © 20032024 Programujte.com
Zasadilo a pěstuje Webtea.cz, šéfredaktor Lukáš Churý