Panel użytkownika
Nazwa użytkownika:
Hasło:
Nie masz jeszcze konta?

Szansa na wylosowanie liczby

Ostatnio zmodyfikowano 2011-07-28 14:08
Autor Wiadomość
diego997
Temat założony przez niniejszego użytkownika
Szansa na wylosowanie liczby
» 2011-07-28 01:50:32
Sory, że tak często tematy nowe zakładam, ale coś mi się przypomniało. Macie jakiś swój sposób na losowanie liczb ? Np. ze zbioru liczb od 0 - 10 szansa na wylosowanie 5 wynosiła 20%?
P-37412
akwes
» 2011-07-28 01:54:19
Hm... Policzyć! :P

Szansa na wylosowanie liczby całkowitej z przedziału <1,10> jest dla każdej 10%, zatem aby zwiększyć szanse wylosowania liczby 5 do 20% należy powtórzyć losowanie jeszcze raz, jeżeli nie wypadnie od razu liczba 5.
Do 30%, trzy takie losowania, do 40% cztery. :P

Tak mi się wydaje. Tylko wraz z kolejną próbą innym liczbom też zmienia się szansa (chyba, trzeba by ich zapytać xD).

//edit
W sumie to innym się nie zwiększa szansa na wylosowanie, przy każdym losowaniu jest dla wszystkich taka sama, zaś przy rozpatrywaniu wszystkich losowań, to 5 zyskuje na szansie, zmniejszając szansę innych.

//edit2
Dzięki, poprawione
P-37413
ison
» 2011-07-28 01:57:23
@up
liczbą
liczbom

Więc jeśli losowanie powtórzyłbyś 10 razy to miałbyś 100% szans, że wylosujesz liczbę 5? A jeśli 11 razy to 110%? :D
P-37414
diego997
Temat założony przez niniejszego użytkownika
» 2011-07-28 01:58:34
Wiadomo że pętla chodzi szybko warto zastosować sf::Clock ? Czy może po prostu zwiększyć przedział liczb np od 0 - 5000 ?
P-37415
akwes
» 2011-07-28 02:02:49
Cholera, faktycznie źle :P
Ale zasada będzie taka, ilość losowań inna.

<< wykasowane bzdury >>

Wcześniej było poprawniej :P

na 10 000 obiegów pętli, i dwóch losowań wypadnięcia 5 są na poziomie 1800-1950

za to przy 4 powtórzeniach na 10 000 obiegów, piątka wypada średnio 3400-3600 razy, sądzę że moje podane dane nie były aż tak odbiegające od normy :P


@diego997
co właściwie chcesz osiągnąć ?
P-37416
diego997
Temat założony przez niniejszego użytkownika
» 2011-07-28 02:21:21
TEżto teraz sprawdzam i im większą liczbe wpisuje żeby wylosował tym mniejsza szansa. Potrzebne mi to jest do gry szansa na wypadniecie z potworka tego lub tego ;p. W procentach by to było łatwiej zmiejszyć
P-37417
diego997
Temat założony przez niniejszego użytkownika
» 2011-07-28 02:36:27
żałosne jest te losowanie patrzcie

C/C++
int main()
{
    srand( int( time( NULL ) ) );
    int k = 1;
   
    float random;
   
    for( int i = 0; i < 1000000000; i++ )
    {
       
        random =( rand() % 1000000000 ) + 0;
       
        if( random == 32767 )
        {
            cout << k << endl;
            ++k;
        }
       
       
    }
   
    getch();
}


Wklejcie sobie ten kod i skompilujcie powinno wam się wyswietlać ile razy zostałą wylosowana liczba 32767, a potem zmienncie tą liczbę na 32768 i zobaczcie co się stanie
P-37418
akwes
» 2011-07-28 02:48:29
Po prostu to jest jego zakres :P

the max of rand() is 32767, but that is OK, the rand() will repeat when it is called more than 32767 times.

i jest to zakres signed short int :P

Mówiłeś że chcesz żeby przedmiot wypadał z szansą, tu masz szansę 25%, aby ją zmienić, zmień argument funkcji RandChance.
Spróbuj tego:
(Pisane na szybko, działa do 50% :P powyżej zawsze losuje 100%, ale można zmienić)
C/C++
#include <cstdlib>
#include <iostream>
#include <conio.h>

using namespace std;

bool RandChance( unsigned short ile )
{
    if( ile == 0 )
         return false;
   
   
    int chance = 100 / ile;
    int random = rand() % chance;
   
    if( random == chance / 2 )
         return true;
    else
         return false;
   
}

int main()
{
    srand( int( time( NULL ) ) );
    int k = 1;
   
    cout << "Zdarzenie ktore ma 30% szansy podczas 10 000 losowan wypadlo: ";
    int licznik = 0;
    for( int i = 0; i < 10000; i++ )
    {
        if( RandChance( 25 ) )
             licznik++;
       
    }
    cout << licznik;
    cout << "\nCo daje nam: " << licznik / 100 << "%.";
    getch();
}

Nie zawsze wychodzi 25%, no ale blisko, i można ustawić ile się chce do 50% :P
Można przerobić żeby działało do 100% bo chodzi o problem z dzieleniem, ale to już jak będziesz chciał to zasadę znasz :P
P-37419
« 1 » 2
  Strona 1 z 2 Następna strona