Generování náhodných čísel s určitou pravděpodobností   zodpovězená otázka

VB.NET

Zdravím mám dotaz jak bych mohl vygenerovat ve VB náhodná celá čísla např. 1,2,3,4,5 s pravděpodobností vygenerování např. čísla 4 v 50% případů, 3 s 20% případů atd...

vygenerovat čísla umím podle Rnd() ale neumím přidat %

Díky za případnou radu.

nahlásit spamnahlásit spam 0 odpovědětodpovědět

Náhodná čísla jsou prostě náhodná a žádná pravděpodobnost tam není a udělat nelze. Kromě toho se už nepoužívá Rnd ale třída Random.

nahlásit spamnahlásit spam 0 / 2 odpovědětodpovědět

Môžte vygenerovať náhodné číslo napr. od 0 do 100 a kopou Ifov meniť napríklad 0-010 na 5, 11-30 na 6 a pod. Tam už si môžte konkrétne čísla meniť ľubovoľne. Alebo ak viete opísať závislosť požadovaného čísla od generovaného matematickou funkciou, aj to sa dá použiť. V článku p. Hercega som napríklad vydel niečo takéto:

sqrt(rnd(pow( rozsah, 2))) + minimum

Kde rozsahom myslím rozdiel medzi maximálnou a minimálnou hodnotou.

Taktiež nemusíte použiť druhú mocninu a druhú odmocninu. Môžete použiť teoreticky čokoľvek.

nahlásit spamnahlásit spam 0 / 2 odpovědětodpovědět

Napište mi funkční příklad, kde z poloviny (50%) všech vygenerovaných náhodných čísel bude 4. Potom se s vámi budu bavit dál. Plácat teoretické nesmysly pochycené bůhvíkde umí každý.

nahlásit spamnahlásit spam -1 / 1 odpovědětodpovědět

To jde samozřejmě velmi jednoduše (i když postup popisovaný výše je buď zbytečně složitý, nebo popsaný zbytečně složitě).

Co třeba toto:

- 4 má 50% pravděpodobnost

- 3 má 20% pravděpodobnost

- 2 má 30% pravděpodobnost

Dim cisla() As Integer = { 4, 4, 4, 4, 4, 3, 3, 2, 2, 2 }
Dim r As New Random()

Public Function GetRandomNumber() As Integer
    Return cisla(r.Next(cisla.Length))
End Sub

Tedy samozřejmě pokud předpokládáme, že r.Next má pro každou hodnotu stejnou pravděpodobnost (což by tak dle použitého algoritmu být mělo).

nahlásit spamnahlásit spam 3 / 3 odpovědětodpovědět

Přesnost výsledku bude záviset na počtu vygenerovaných čísel. Čím více čísel, tím více se bude výsledek blížit stanoveným procentům. Při jen stovce čísel budou rozdíly třeba u čtyřek i víc než 10% - u milionu čísel pak třeba jen desetiny procent.

Ale Vaše řešení je prima!

nahlásit spamnahlásit spam 0 odpovědětodpovědět
                       
Nadpis:
Antispam: Komu se občas házejí perly?
Příspěvek bude publikován pod identitou   anonym.
  • Administrátoři si vyhrazují právo komentáře upravovat či mazat bez udání důvodu.
    Mazány budou zejména komentáře obsahující vulgarity nebo porušující pravidla publikování.
  • Pokud nejste zaregistrováni, Vaše IP adresa bude zveřejněna. Pokud s tímto nesouhlasíte, příspěvek neodesílejte.

přihlásit pomocí externího účtu

přihlásit pomocí jména a hesla

Uživatel:
Heslo:

zapomenuté heslo

 

založit nový uživatelský účet

zaregistrujte se

 
zavřít

Nahlásit spam

Opravdu chcete tento příspěvek nahlásit pro porušování pravidel fóra?

Nahlásit Zrušit

Chyba

zavřít

feedback