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

Losowanie bez powtórzeń - problem

Ostatnio zmodyfikowano 2013-01-28 12:38
Autor Wiadomość
Maniek
Temat założony przez niniejszego użytkownika
Losowanie bez powtórzeń - problem
» 2013-01-28 09:38:17
Witam mógłby mi ktoś wytłumaczyć dlaczego, jak np. wpiszę kolejno 1,2,3 to nie raz losuje dobrze a nieraz albo dwie takie same, albo np. 1,23132 ??

Oto kod :
C/C++
#include <iostream>
#include <cstdlib>
#include <conio.h>
#include <ctime>

bool czyBylaWylosowana( int iLiczba, int tab[], int ile )
{
    if( ile <= 0 )
         return false;
   
    int i = 0;
    do
    {
        if( tab[ i ] == iLiczba )
             return true;
       
        i++;
    } while( i < ile );
   
    return false;
}

int wylosuj()
{
    return( rand() % 3 ) + 1;
}

int main()
{
    srand( time( NULL ) );
    int losowanie[ 3 ];
    int wylosowanych = 0;
    int liczba[ 3 ];
    int ads = 0;
    std::cout << "Podaj pierwsza liczbe : ";
    std::cin >> liczba[ 0 ];
    std::cout << "Podaj druga liczbe : ";
    std::cin >> liczba[ 1 ];
    std::cout << "Podaj trzecia liczbe : ";
    std::cin >> liczba[ 2 ];
    do
    {
        int liczba2 = wylosuj();
        if( czyBylaWylosowana( liczba2, losowanie, wylosowanych ) == false )
        {
            losowanie[ wylosowanych ] = liczba[ ads ];
            wylosowanych++;
        }
        ads++;
    } while( wylosowanych < 2 );
   
    wylosowanych = 0;
   
    do
    {
        std::cout << losowanie[ wylosowanych ] << std::endl;
        wylosowanych++;
    } while( wylosowanych < 2 );
   
    return 0;
}
P-75204
DejaVu
» 2013-01-28 12:25:24
Czy próbowałeś przeglądać istniejące rozwiązania tego zadania? Jest już co najmniej kilkadziesiąt rozwiązanych wątków na forum.

/edit:
C/C++
losowanie[ wylosowanych ] = liczba[ ads ];
zamień na:
C/C++
losowanie[ wylosowanych ] = liczba2;

Dodam, że tablica:
C/C++
int liczba[ 3 ];
jest zbędna.
P-75209
usmiech
random
» 2013-01-28 12:38:50
Witam, nie mam zamiaru ingerowac w Twoj proces uczenia sie, ale moze program, ktory losowo podaje numery w grze w kosci /o ilosci kostek decyduje uzytkownik/ w czyms Ci pomoze... Mam nadzieje, ze nie wkurze admina ....;)

C/C++
// dice.cpp : Defines the entry point for the console application.
//

#include "stdafx.h"
#include <iostream>
#include <cstdlib>
#include <cmath>
#include <ctime>
using namespace std;
int rand_0toN1( int n );


int main() {
    int userInput, i;
    int r;
    srand( time( NULL ) );
    cout << "Wprowadz ilosc kostek do losowania: ";
    cin >> userInput;
    for( i = 1; i <= userInput; i++ ) {
        r = rand_0toN1( 6 ) + 1;
        cout << r << " ";
       
    }
    cout << endl;
    system( "PAUSE" );
   
    return 0;
}
int rand_0toN1( int i_numberToCheck ) {
    return rand() % i_numberToCheck;
}
P-75211
« 1 »
  Strona 1 z 1