Toplamı 100 olan 3 adet rastgele sayı üreten kod nasıl olmalıdır?

Katılım
2 Mart 2005
Mesajlar
2,960
Excel Vers. ve Dili
ev: Ofis 2007- Win Xp
iş: Ofis 2010- Win Vista
Toplamı 100 olan 3 adet rastgele sayı üreten kod nasıl olmalıdır?
Yapılabiliyorsa Toplamı x olan , y adet kadar sayı üreten fonksiyon üretilebilir mi?
 
Katılım
13 Ekim 2008
Mesajlar
7
Excel Vers. ve Dili
Of.2003-Tr
rasgele sayı fonksiyonumuz var ise;

1) 0-100 arasında rasgele sayı üret (tam sayı) bunu x değişkenine ata

2) 0-100 arasında rasgele sayı üret (tam sayı) bunu y değişkenine ata..
. x+y>100 ise 2. adım yeniden yapılır..

3) 100-(x+y) bunu da üçüncü değişkene z'ye değişkene ata..

artık x+y+z değişkenleri toplamı 100 olur..
 
Katılım
15 Haziran 2006
Mesajlar
3,704
Excel Vers. ve Dili
Excel 2003, 2007, 2010 (TR)
Bence Contrex'in önerdiği yöntem Rastgele'liği (veya Rassallığı) engeller.

Birinci sayının 50 çıkması halinde 2.sayı içine geriye kalan tek seçenek 0-50 arasında bir rakam ... İkinci sayınında çekilip 30 olması halinde; 3.sayı için kalan aralık 0-20 arasınd rakamlar ...

Yani, bir rastgelelik değil bir bağımlılık sözkonusu ... 2.Sayı 1'ciye bağlı, . 3.Sayı ise 1 ve 2 'den artık ne artarsa tamamen ona bağımlı gibi ...

Kaos Teorisine göre; düzensizliğin düzeni kaybolmuş :) ...

Benim önerim şu şekilde olurdu ... Gerçi bu öneri de tartışılır tabi ...

Önce; 3 rassal sayıyı da aynı anda, birbirinden bağımsız oluşturun.

Ya bunları toplamlarını 100 olacak şekilde oransal olarak indirgeyin

veyahut üç sayının da toplamı 100 olana kadar yeni rassal sayılar üretin (Bunun ne kadar zaman alacağının garantisi yok tabi)

Bu şekilde; daha bir rastgelelik yaratırsınız ...

Benim fikrim bu yöndedir.
 
Katılım
27 Temmuz 2004
Mesajlar
719
Excel Vers. ve Dili
Excel 2003 Tr
Ferhat beyin söylediklerine katılmakla birlikte, sonuçta zaten soruda da bir bağımlılık var ve toplamlar belli bir sayı olmak zorunda, ve illaki üç sayıdan ikisinin toplamı ilk rastgele sayının ulaşılmak istenen sayı ile farkı kadar olmak zorunda. Bu konuyu tartışmakta fayda var.

Benim bir yöntemim var o da şu
Rastgele sayılar x1, x2 diye devam edecek olursa
x2 0-100 arası değil 0-(100-x1) arasında
x3 de 0-(100-x1-x2) arasında olması gerekliliğine dayanıyor

toplamı x olan y kadar sayı

Kod:
Sub a()
'say=y ve toplam=x olarak alındı 
toplam = 100
say = 3
ReDim a(say) As Integer

For i = 1 To say - 1

a(i) = Int(Rnd * toplam)
toplam = toplam - a(i)
Next
a(say) = toplam

For k = 1 To say
Cells(k, 1) = a(k)
Next

End Sub

Yalnız burada oluşan sayılar birbirinden farklı sayılar olmuyor ve bir kaç tane birbirine eşit sayı çıkabiliyor özellikle sonlara kalan sayılar genelde 0 olarak bulunuyor. şimdi biraz bu konu üzerinde çalışalım.
 
Katılım
27 Temmuz 2004
Mesajlar
719
Excel Vers. ve Dili
Excel 2003 Tr
İlk yöntemde üretilen ilk sayı çok büyük olunca son rakamlar 0 1 2 lerle doluyor, bunun önüne geçmek için birkaç satır daha ekledim ama o zamanda rastsallığa çok fazla müdahale etmiş oluyoruz.
Kod:
Sub a()
x = 100
y = 8
ReDim a(y) As Integer
For i = 1 To y - 1
    m = 0
    For l = 0 To y - i - 1
        m = m + l
    Next
    MsgBox m
    a(i) = Int(Rnd * (x - m))
    x = x - a(i)
    Cells(i, 1) = a(i)
    MsgBox x
Next
a(y) = x
For k = 1 To y
Cells(k, 1) = a(k)
Next
End Sub
Herhalde en iyisi Ferhat beyin önerisi
Kod:
Sub b()
x = 100
y = 3
x1 = 0
ReDim a(y) As Integer
For i = 1 To y
a(i) = Int(Rnd * x)
x1 = x1 + a(i)
Next

For i = 1 To y
a(i) = a(i) * x / x1
Cells(i, 1) = a(i)
Next
End Sub
 
Katılım
2 Mart 2005
Mesajlar
2,960
Excel Vers. ve Dili
ev: Ofis 2007- Win Xp
iş: Ofis 2010- Win Vista
önerileriniz için teşekkürler..
herhalde en mantıklısı rastgele 2 sayı üretip toplamının 100 den küçük olup olmadığını kontrol ettirmek, küçükse 3. sayı için ilk iki sayının toplamını 100 den çıkarmak.
 
Katılım
13 Ekim 2008
Mesajlar
7
Excel Vers. ve Dili
Of.2003-Tr
rasgele sayı fonksiyonumuz var ise;

1) 0-100 arasında rasgele sayı üret (tam sayı) bunu x değişkenine ata

2) 0-100 arasında rasgele sayı üret (tam sayı) bunu y değişkenine ata..
. x+y>100 ise 2. adım yeniden yapılır..

3) 100-(x+y) bunu da üçüncü değişkene z'ye ata..

artık x+y+z değişkenleri toplamı 100 olur..
2. adıma düzenleme olabilir.. yorumlardan sonra geldi aklıma...

1) 0-100 arasında rasgele sayı üret (tam sayı) bunu x değişkenine ata

2) (100-x) - 100 arasında rasgele sayı üret (tam sayı) bunu y değişkenine ata..
. ' x+y>100 ise 2. adım yeniden yapılır.. artık buna ihtiyaç kalmadı

3) 100-(x+y) bunu da üçüncü değişkene z'ye ata..
 
Katılım
11 Mart 2021
Mesajlar
1
Excel Vers. ve Dili
türkçe
Merhabalar, Benim elimde bir ürün listesi var ve fiyatları var. Rasgele senaryolar oluşturmaya çalışıyorum. Örnek veriyorum, Elma 5 TL, Armut 7 TL, Kiraz 10 TL. Ben 100 TL ciro yapmak için hangi üründen kaç tane satmam gerekir. Sonucu 100 olan kaç tane senaryo vardır? Bunu makrosuz çözme şansım var mı sizce. Sadece fonksiyonları kullanarak. Seri içierisinden rasgele değerleri istediğin kadar seç ama toplamı yüz olsun.


Teşekkür ederim, Selamlar
 
Üst