C programlama random üst limiti

grigon

Kilopat
Katılım
7 Ağustos 2017
Mesajlar
176
Çözümler
1
C dilinde random fonksiyonu olan rand ile rastgele sayı ürettiğimizde Max 32767 sayısına kadar değer üretebiliyor. Random fonksiyonunun üst limitini nasıl arttırabiliriz? Mesela ben 1 ile 40000 arasında sayı üretmek istiyorum, aklıma 2 kere sayı üretip bunları toplamak geliyor ama bu da kullanışsız bir yöntem. Fikriniz varsa yardımcı olursanız sevinirim.
 
Başkent Üniversitesinden Alıntı;
1.2 rand() fonksiyonu C dilinde, stdlib.h dosyası içine konulan rand() fonksiyonu rasgele sayı üretir. Farklı C derleyicileri farklı algoritmalar kullanabilir. Ama, genellikle, her rand() fonksiyonu 0 ile RAND_MAX arasında bir sayı üretir. RAND_MAX, çoğu derleyicide 32767 olarak belirlenir ve RAND_MAX sabiti stdlib.h dosyası içine konulur

C++'da böyle yazdığım zaman sorunsuz üretiyor ancak "x=rand() %100000 + 1;" yazdığımda 32767'ye kadar üretiyor, değişik :)
C++:
#include <iostream>
#include <stdlib.h>
#include <time.h>
using namespace std;

int main() {
    int x;
srand(time(NULL));
for(int i=0;i<100;i++){

x=rand() %100000 + 32767;
cout<<x<<endl;
}

    system("pause");
    return 0;
}
 
Define ile RAND_MAX değerini değiştirmeyi denedim ama yine de stdlib.h kütüphanesindeki değeri kullanıyor, kütüphaneye girip baktım 0x7FFF hex ile tanımlanmış bunu yükseltsem zaten kütüphaneyi değiştirmeme izin vermiyor. Long int kullanmakda işe yaramıyor çünkü rand fonksiyonu 16 Bit tanımlandığı için üretemiyor sayıyı. Bilemiyorum ne yapmalı.
 
C++'da böyle yazdığım zaman sorunsuz üretiyor ancak "x=rand() %100000 + 1;" yazdığımda 32767'ye kadar üretiyor, değişik :)
C++'da rand kullanılmaz. Çok farklı random üretebilen araçlar mevcut. Onların böyle kısıtlamaları yok.
Define ile RAND_MAX değerini değiştirmeyi denedim.
Tanımlı olduğu için yapamazsınız. Birden fazla rand ile yapmalısınız. Ya da bir taneyi istediğiniz menzil ile çarparsınız sonrasında o sayıya kadar olan başka bir rand eklersiniz. Bu sayede 2 tane olmuş olur bir de çarpma işlemi yapmış olursunuz.
 
C++'da rand kullanılmaz. Çok farklı random üretebilen araçlar mevcut. Onların böyle kısıtlamaları yok.

Tanımlı olduğu için yapamazsınız. Birden fazla rand ile yapmalısınız. Ya da bir taneyi istediğiniz menzil ile çarparsınız sonrasında o sayıya kadar olan başka bir rand eklersiniz. Bu sayede 2 tane olmuş olur bir de çarpma işlemi yapmış olursunuz.
Bilgisayar Mühendisliği okuyorum ve 1. Sınıf C++ Derslerinde öğretiliyor. Neden kullanılmadığını merak ettim izah ederseniz sevinirim.
 
Son düzenleyen: Moderatör:
Bilgisayar Mühendisliği okuyorum ve 1. Sınıf C++ Derslerinde öğretiliyor. Neden kullanılmadığını merak ettim izah ederseniz sevinirim.
Çüncü C++'ta direkt #include <random> diye bir kütüphane var. İçinde çeşit çeşit rastgele değer oluşturabileceğiniz metotlar var. Buradan bakabilirsiniz. srand ve rand kullanmak daha çok C ilkelliğinde kalıyor. Düzgün C++ kullanan kimse srand ve rand kullanmaz. C'ye göre çok büyük bir dil. Birçok yeniliği var. O güzellikleri kullanmadıktan sonra C++ demenin bir anlamı kalmıyor.
 
C dilinde random fonksiyonunun çok nitelikli olmadığını biliyordum ama üzerine çalışma fırsatı buldukça daha da farkına vardım ki random konusunda büyük sıkıntıları var C'nin. Random'u üretme şekli ve srand kullanımı çok problemli.
 
Uyarı! Bu konu 6 yıl önce açıldı.
Muhtemelen daha fazla tartışma gerekli değildir ki bu durumda yeni bir konu başlatmayı öneririz. Eğer yine de cevabınızın gerekli olduğunu düşünüyorsanız buna rağmen cevap verebilirsiniz.

Technopat Haberler

Yeni konular

Geri
Yukarı