Random Hep Aynı Sayıyı Seçiyorsa Ne Yapmalı?
-
random hep 83 sayısını seçiyor,programı yeniden çalıştırsamda yine 83 seçiyor.ee ne alaka randomdu hani?
#include <stdio.h> int main (void) { int deneme=0,random_sayi,girilen_sayi; random_sayi=rand()%100; while (1) { printf("Bir sayi giriniz:"); scanf("%d",&girilen_sayi); deneme++; if(girilen_sayi==random_sayi) {printf("Tebrikler! %d denemede buldunuz.",deneme);break;} printf("Yanlis Tahmin!\n"); if(girilen_sayi>random_sayi) {printf("Daha kucuk...\n");} if(girilen_sayi<random_sayi) {printf("Daha buyuk...\n");} } return 0; }
-
her denemedemi ? yoksa program 83 seçiyor, sen kapatıyorsun tekrar açtığında tekrar 83 seçiyor ?
-
random komutuna random seed vermezsen hep aynı sayıyı verir. değişken seed vermek için en iyi yöntem de sürekli değiştiği için zamanı kullanmak.
time.h kütüphanesini ekleyip srand ( time(NULL) ); ile seed verirsen sorun çözülür:
#include <stdio.h> #include <time.h> int main (void) { srand(time(NULL)); int deneme=0,random_sayi,girilen_sayi; random_sayi=rand()%100; while (1) { printf("Bir sayi giriniz:"); scanf("%d",&girilen_sayi); deneme++; if(girilen_sayi==random_sayi) {printf("Tebrikler! %d denemede buldunuz.",deneme);break;} printf("Yanlis Tahmin!\n"); if(girilen_sayi>random_sayi) {printf("Daha kucuk...\n");} if(girilen_sayi<random_sayi) {printf("Daha buyuk...\n");} } return 0; }
-
smok3 bunu yazdı:
-----------------------------random komutuna random seed vermezsen hep aynı sayıyı verir. değişken seed vermek için en iyi yöntem de sürekli değiştiği için zamanı kullanmak.
time.h kütüphanesini ekleyip srand ( time(NULL) ); ile seed verirsen sorun çözülür:
#include #include int main (void) { srand(time(NULL)); int deneme=0,random_sayi,girilen_sayi; random_sayi=rand()%100; while (1) { printf("Bir sayi giriniz:"); scanf("%d",&girilen_sayi); deneme++; if(girilen_sayi==random_sayi) {printf("Tebrikler! %d denemede buldunuz.",deneme);break;} printf("Yanlis Tahmin!\n"); if(girilen_sayi>random_sayi) {printf("Daha kucuk...\n");} if(girilen_sayi
-----------------------------eyvallah hocam..ancak çalışma mantığını tam anlayamadım,biraz daha yalın açıklarmısın?
-
rand() fonksiyonu malesef kafasına göre rastgele bir değişken veremiyor. önce ona seed dediğimiz bir değer vermen gerek eğer vermezse default olarak sanırım 1 kabul ediyor. o yüzden hep aynı sayıyı döndürüyor. her seferinde farklı bir seed vermek için de en iyi yöntem seed olarak o anki sistem saatini vermek. çünkü zaman sürekli değişiyor. o yüzden program da bize farklı bir random sayı veriyor.
-
smok3 bunu yazdı:
-----------------------------rand() fonksiyonu malesef kafasına göre rastgele bir değişken veremiyor. önce ona seed dediğimiz bir değer vermen gerek eğer vermezse default olarak sanırım 1 kabul ediyor. o yüzden hep aynı sayıyı döndürüyor. her seferinde farklı bir seed vermek için de en iyi yöntem seed olarak o anki sistem saatini vermek. çünkü zaman sürekli değişiyor. o yüzden program da bize farklı bir random sayı veriyor.
-----------------------------anlaşıldı hocam,teşekkürler..
-
diğer dillerdeki random'un mantığı nedir acaba yeri gelmişken sorayım
-
Daft bunu yazdı:
-----------------------------diğer dillerdeki random'un mantığı nedir acaba yeri gelmişken sorayım
-----------------------------diğer dillerde bios saatinden yararlanıyor
-
nan biz random la aralığı baya bayaa geniş tutup döküman yönetim sisteminin evrak numaralarını verdik bitirme projelerinde 1 tane bile aynı vermedi denemelerde :)
-
kafkafkaf bunu yazdı:
-----------------------------Daft bunu yazdı:
-----------------------------diğer dillerdeki random'un mantığı nedir acaba yeri gelmişken sorayım
-----------------------------diğer dillerde bios saatinden yararlanıyor
-----------------------------ertesi gün aynı saatte veya
sistem saatini ve tarihi gene aynı yapmak suretiyle aynı random sayıyı elde etme olasılığım nedir?
-
srand fonksiyonu zaten verilmiş,bana "rassallaştırmayı araştır" demek kalmış :)