C dilinde olasılığa göre rastgele sayı oluşturma

BerkayBilgin1

Hectopat
Katılım
18 Kasım 2019
Mesajlar
335
Çözümler
2
Daha fazla  
Cinsiyet
Erkek
Merhaba, benim şöyle bir sorum var C dilinde bildiğiniz gibi rand() fonksiyonuyla rastgele sayı oluşturuyoruz ama bu sayılar tam anlamıyla rastgele geliyor mesela 1-30 arası sayı istenirse bize rastgele olasılıkla sayılar geliyor. Ben şunu istiyorum mesela bu sayılar arasından benim seçtiğim sayıların gelme olasılığı daha fazla olsun. Sallıyorum 10 sayısı %60 daha fazla gelsin. Bunu C dilinde yapmanın bir yolu var mı? Diğer dillerde oluyorsa onu da atabilirsiniz ama diğer dillerde bilgim biraz az bu yüzden eğer farklı bir dildeyse anlatarak yazarsanız sevinirim.
 
Eğer 5 sayısının daha fazla ihtimali olmasını istiyorsanız, rand() fonksiyonunu kullanarak ürettiğiniz sayıların dağılımını değiştirebilirsiniz. Örneğin, aşağıdaki kod, 0 ile 9 arasında bir sayı üretecek ancak 5 sayısının daha fazla ihtimali olacak şekilde dağıtılmış olacaktır:

C:
#include <stdio.h>
#include <stdlib.h>
#include <time.h>

int main(void) {
  // Rastgele sayı üreteci için bir seme girin
  srand(time(NULL));

  // 0 ile 9 arasında bir sayı üretin ve 5 sayısının daha fazla ihtimali olmasını sağlayın
  int random_number = rand() % 10;
  if (random_number > 5) {
    random_number = rand() % 5;
  }

  printf("Rastgele sayı: %d\n", random_number);

  return 0;
}

Bu kod, 0 ile 5 arasında bir sayı üretecektir ve bu sayıların %50'si 5 olacaktır. Eğer daha farklı bir dağılım istiyorsanız, kodu değiştirerek istediğiniz dağılımı elde edebilirsiniz.
 
Eğer 5 sayısının daha fazla ihtimali olmasını istiyorsanız, rand() fonksiyonunu kullanarak ürettiğiniz sayıların dağılımını değiştirebilirsiniz. Örneğin, aşağıdaki kod, 0 ile 9 arasında bir sayı üretecek ancak 5 sayısının daha fazla ihtimali olacak şekilde dağıtılmış olacaktır:

C:
#include <stdio.h>
#include <stdlib.h>
#include <time.h>

int main(void) {
  // Rastgele sayı üreteci için bir seme girin
  srand(time(NULL));

  // 0 ile 9 arasında bir sayı üretin ve 5 sayısının daha fazla ihtimali olmasını sağlayın
  int random_number = rand() % 10;
  if (random_number > 5) {
    random_number = rand() % 5;
  }

  printf("Rastgele sayı: %d\n", random_number);

  return 0;
}

Bu kod, 0 ile 5 arasında bir sayı üretecektir ve bu sayıların %50'si 5 olacaktır. Eğer daha farklı bir dağılım istiyorsanız, kodu değiştirerek istediğiniz dağılımı elde edebilirsiniz.
Anladım yani doğrudan bir ön tanımlı fonksiyon yok kendimiz kullanıcı tanımlı yapabiliyoruz. Teşekkürler cevap için.
 

Geri
Yukarı