Страница 1 от 2 12 ПоследноПоследно
Резултати от 1 до 15 от общо 17

Проблем с random в C

Сподели във Facebook Сподели в Twitter Изпрати на Email Сподели в LinkedIn
  1. Junior Member
    Тук е от
    Jul 2005
    Мнения
    130
    #1

    Проблем с random в C

    Здравейте
    Някой може ли да ми помогне със следния казус:
    Трябва да направя една програма в която да се генерират само 6 цифрени числа. Изчетох целия хелп и май стигнах до извода, че rand генерира числа винаги от 0 нагоре до RAND_MAX. Някой знае ли някакъв друг начин на С чрез който да се генерират само 6 цифрени числа???

  2.  
     
  3. Senior Member
    Тук е от
    Dec 2004
    Мнения
    1,563
    #2

    Re: Проблем с random в C

    Да генерираш числа от 0 до 1 и да ги умножаваш х 1000000

  4. Member
    Тук е от
    Nov 2004
    Мнения
    496
    #3

    Re: Проблем с random в C

    Или евентуално да делиш на RAND_MAX+1, да умножаваш по 900000 и да добавяш 100000, ако такава ти е дефиницията за шестцифрено число.
    Начини много, първият резултат в Google например е http://www.thinkage.ca/english/gcos/.../lib/rand.html...

  5. Junior Member
    Тук е от
    Jul 2005
    Мнения
    130
    #4

    Re: Проблем с random в C

    Ще кажете ли къде ми е грешката:
    #include <stdio.h>
    #include <stdlib.h>
    #include <conio.h>
    int main()
    {
    int i;

    clrscr();

    for (i=0; i<100; i++) {
    randomize();
    printf("%.6d \t",random(2)*1000000); }
    getch();
    return 0;
    }

    Целта е да се изведат 100 числа които са 6цифрени и да не се повтарят, а в момента програмата ми извежда едно и също число 100 пъти ;(

  6. Member
    Тук е от
    Nov 2004
    Мнения
    496
    #5

    Re: Проблем с random в C

    Какво е random(2) - случайно цяло число между нула и едно ли?
    Ако изкараш randomize() от цикъла, какво получаваш?
    Кое е е въпросното число, което ти изкарва 100 пъти?
    Нямам C, за да видя как работи, иначе нямаше да питам.

  7. SAGE
    Guest
    #6

    Re: Проблем с random в C

    Randomize трябва да е преди цикъла, т.е. да се извиква само един път.
    В хелпа няма ли пример как се използва Random и Randomize?

  8.  
     
  9. Junior Member
    Тук е от
    Jul 2005
    Мнения
    130
    #7

    Re: Проблем с random в C

    ами в хелп-а има пример, но е без цикъл. Ако махна цикъла ми извежда само 1 число. А целта е те да са 100 на брой. Ако махна rondomize(); от цикъла има промяна - извежда числата 000000 и 016960. Преди беше само 016960 100 пъти. Нещо ми се струва че проблема може да е в моя "телевизор". Може на Борланда да не е предвиден за 3Гхз машина. Ще пробвам и на другия комп и ще кажа какъв е резултата.

  10. Senior Member Аватара на Bibi
    Тук е от
    Nov 2004
    Мнения
    2,757
    #8

    Re: Проблем с random в C

    Не става ли да генерираш случайно 6 цифри една по една? (Става дума за два вложени цикъла - вътрешния до 6, външния до 100.)
    Но няма гаранция за неповтаряемостта.

    Втора идея:
    Взимаш часа в момента на генерирането и го обръщаш в милисекунди. (така ще имаш все различни)
    Взимаш само 6-те последни символа от полученото число и им правиш някакви размествания на цифрите (ако цикълчето ти се върти прекалено бързо, можеш да вземеш не последните 6 символа, а предпоследните)...

    Трето:
    Питай Гугъл за алгоритми за генератори на серийни номера.

  11. Member
    Тук е от
    Jun 2002
    Мнения
    796
    #9

    Re: Проблем с random в C

    Това е работеща програма за gcc3.3.4, с glibc 2.3.4
    #include <stdio.h>
    #include <stdlib.h>

    int main()
    {
    int i;
    printf("\n");
    for (i=0; i<100; i++)
    {
    printf("%d \t",(int)((float)random()/RAND_MAX*899999)+100000);
    }
    printf("\n");
    return 0;
    }

  12. Senior Member
    Тук е от
    Dec 2000
    Мнения
    3,218
    #10

    Re: Проблем с random в C

    Цитат Първоначално публикувано от klamer
    Това е работеща програма за gcc3.3.4, с glibc 2.3.4
    ...за което от мен имаш рейтинг (+1)


    Работи и с glibc-2.4 & gcc-4.1.1.
    Само не ми хареса outputa, та и приложих този patch:
    Код:
    --- hello1.c  2006-10-22 23:13:48.799326156 +0300
    +++ hello.c   2006-10-22 23:08:55.053531535 +0300
    @@ -8,8 +8,9 @@
         for (i=0; i<100; i++)
         {
            printf("%d \t",(int)((float)random()/RAND_MAX*899999)+100000);
    +        printf("\n");
         }
    -    printf("\n");
    +
         return 0;
     }


  13. Senior Member
    Тук е от
    Feb 2003
    Мнения
    2,351
    #11

    Re: Проблем с random в C

    което решение не елиминира повтарящите се числа

    а м/у другото на С не знам как е, ама на Паскал помня че в Randomize() трябваше да се сложи случайно число, за да гарантира 'случайно' генериране, и препоръчваха това да е променливата TIME

  14.  
     
  15. Senior Member
    Тук е от
    Dec 2000
    Мнения
    3,218
    #12

    Re: Проблем с random в C

    А на f77 помниш ли как беше ;-)))))))))

  16. Senior Member
    Тук е от
    Feb 2003
    Мнения
    2,351
    #13

    Re: Проблем с random в C

    утре ще си извадя перфокартите дето ги дупчихме в първи курс и щи кажа

  17. Member
    Тук е от
    Nov 2004
    Мнения
    496
    #14

    Re: Проблем с random в C

    Цитат Първоначално публикувано от Black Adder
    утре ще си извадя перфокартите дето ги дупчихме в първи курс и щи кажа
    По-вероятно е да са за F IV, F77 май е въведен заедно с терминалите за VMS. Може и да греша, де.
    Може да почнеш да гледаш на перфокарти, 'сичко шъ пузнаваш.

    Чак никой ли не пробва примерите от линка, който дадох в началото? Стана ми интересно, ще взема да си сложа някакво Цъ да ги видя.

    @klamer: (RAND_MAX+1)/900000 е мъъъничко по-правилно по принцип. Съвсем дребнава забележка, впрочем.

  18. Junior Member
    Тук е от
    Mar 2006
    Мнения
    134
    #15

    Re: Проблем с random в C

    Я пробвай така


    #include <stdio.h>
    #include <conio.h>
    int main(int argc, char* argv&#91;])
    {
    int i;
    randomize();
    printf("Ten random numbers\n\n");
    for(i=0; i<10; i++)
    printf("%d\n", rand() % 1000000);
    getch();
    return 0;
    }

    Ten random numbers

    7026
    20361
    28710
    27536
    31610
    7201
    568
    27330
    16431
    22581

Сподели във Facebook Сподели в Google Plus Сподели в Twitter Изпрати на Email Сподели в LinkedIn
Страница 1 от 2 12 ПоследноПоследно

Подобни теми

  1. Delphi:random text/label
    От REHIT във форум Общ - софтуер
    Отговори: 4
    Последно: 30-01-04, 23:15

SetCombG.com
SetCombG.com е портален сайт и Форум за битова техника, телевизори, климатици, лаптопи и смартфони, създаден през 1999 година.
Заедно сме над 20 години!
Следвай ни
Горе