Makale numarası: 231847 - Son Gözden Geçirme: 24 Haziran 2004 Perşembe - Gözden geçirme: 3.0

BILGI: Nasıl Visual Basic pseudo-Random sayılar RND fonksiyonunun oluşturur

Sistem İpucuBu makale, kullandığınızdan farklı bir işletim sistemine yöneliktir. Sizinle ilgili olmayabilecek makale içeriği devre dışı bırakıldı.
Hepsini aç | Hepsini kapa

Özet

Visual Basic'te RND işlev üretir sayılara göre belirli bir algoritma oluşturur. Belirli olaylar, bilimsel veya istatistiksel bu numaralarının nasıl oluşturulduğunu anlamak önemli olabilir. Bu makalede kullanılan algoritma belgelemektedir.

Bu makalenin kapsamı dışındadır bu algoritmanın istatistiksel yapısı üzerinde tam bir treatise olsa da konuyu bilimsel olan belgeleri yaygın olarak ele alınmıştır.

Daha fazla bilgi

Microsoft Visual Basic işlevindeki RND üretir numara oluşturmada congruential doğrusal yöntemi kullanır. Kullanılan algoritma aşağıdaki sahte kod belgelemektedir:
   x1 = ( x0 * a + c ) MOD (2^24)
				
yeri:

x 1 = yeni değer
x, 0 = önceki değeri (bir başlangıç değeri 327680, Visual Basic tarafından kullanılır)
bir 1140671485 =
c 12820163 =

Yukarıdaki formülde 'MOD' işleci, sonra bir tamsayı bölme tamsayı kalanı verir.

Ifade x1/(2^24) 0.0 ile 1.0 RND işlevi tarafından döndürülen arasındaki kayan noktalı sayı sonra döndürecektir.

Not Yukarıdaki algoritması Visual Basic kodunda RND işleviyle oluşturulan rasgele bir numara sırası yeniden olduğunu şekilde uygulanması edemiyor. Bu, çünkü Visual Basic, Visual Basic dil tarafından desteklenmeyen bir imzasız uzun veri türü dahili olarak kullanır.

Visual Basic oluşturan ilk on üretir numara oluşturmak için aşağıdaki C/C++ kod kullanılabilir:
#include "stdafx.h"

int main(int argc, char* argv[])
{
unsigned long       rndVal;

rndVal = 0x50000L;
int i;
float rndFloat;

for (i=0;i<10;i++)
	{
	rndVal = (rndVal * 0x43fd43fdL + 0xc39ec3L) & 0xffffffL;
	rndFloat = (float)rndVal / (float)16777216.0;
	printf("Value is %.15f\n",rndFloat);
	}
return 0;
}
				
program varsayılan olarak, işlev üretir dizisini her numaralar döndürecektir Rnd() zaman, Not çalıştırın. Bazı amacıyla (örneğin, istatistiksel çalışmaları repeatability gerekli olduğu) bu uygun olabilir. Uygulamaları (örneğin, oyunlar, için bu uygun olmayabilir. Farklı bir sıra gerekiyorsa, ilk çağrı Rnd() önce rastgele ifadesini kullanın. Bu rasgele olan sayı çekirdek sistem süreölçeri'ni kullanarak başlatmak. Farklı bir sıra gereklidir, ancak gelecekte yinelenebilir olmalıdır, burada X bazı özel sayısal değerdir rastgele X sözdizimini kullanın.

Rnd() içinde kullanıldığı her bileşen için yeni bir sıra döndürmesidir tanımak önemlidir; kendi ana EXE bir sıra oluşturur ve ayrıca, bir sıra oluşturmak için bir Visual Basic ActiveX DLL DOSYASı kullanır, diğer bir deyişle, bu sıralar birbirlerinden bağımsız.

Referanslar

Hakkında ek bilgi için Microsoft Basic'ün önceki sürümlerinde üretir numaralarını oluşturması, lütfen Microsoft Knowledge Base'deki makaleyi görüntülemek üzere aşağıdaki makale numarasını tıklatın:
28150  (http://support.microsoft.com/kb/28150/EN-US/ ) RND ve rasgele sayılar oluşturuluyor için RANDOMIZE seçenekleri
Üretir numara serilerini oluşturmak için çeşitli sayısal algoritmaları, ınternet ve sayısal algoritmaları ilgili yayımlanmış metinleri bulunabilir.

Bu makaledeki bilginin uygulandığı durum:
  • Microsoft Visual Basic 1.0 Standard Edition
  • Microsoft Visual Basic 2.0 Standard Edition
  • Microsoft Visual Basic 3.0 Professional Edition
  • Microsoft Visual Basic 2.0 Professional Edition
  • Microsoft Visual Basic 3.0 Professional Edition
  • Microsoft Visual Basic 4.0 Standard Edition
  • Microsoft Visual Basic 4.0 Professional Edition
  • Microsoft Visual Basic 4.0 Professional Edition
  • Microsoft Visual Basic 4.0 16-bit Enterprise Edition
  • Microsoft Visual Basic 4.0 32-Bit Enterprise Edition
  • Microsoft Visual Basic 5.0 Learning Edition
  • Microsoft Visual Basic 6.0 Learning Edition
  • Microsoft Visual Basic 5.0 Professional Edition
  • Microsoft Visual Basic 6.0 Professional Edition
  • Microsoft Visual Basic 5.0 Enterprise Edition
  • Microsoft Visual Basic Enterprise Edition for Windows 6.0
Anahtar Kelimeler: 
kbmt kbinfo KB231847 KbMttr
Otomatik TercümeOtomatik Tercüme
ÖNEMLİ: Bu makale, bir kişi tarafından çevrilmek yerine, Microsoft makine-çevirisi yazılımı ile çevrilmiştir. Microsoft size hem kişiler tarafından çevrilmiş, hem de makine-çevrisi ile çevrilmiş makaleler sunar. Böylelikle, bilgi bankamızdaki tüm makalelere, kendi dilinizde ulaşmış olursunuz. Bununla birlikte, makine tarafından çevrilmiş makaleler mükemmel değildir. Bir yabancının sizin dilinizde konuşurken yapabileceği hatalar gibi, makale; kelime dağarcığı, söz dizim kuralları veya dil bilgisi açısından yanlışlar içerebilir. Microsoft, içeriğin yanlış çevrimi veya onun müşteri tarafından kullanımından doğan; kusur, hata veya zarardan sorumlu değildir. Microsoft ayrıca makine çevirisi yazılımını sıkça güncellemektedir.
Makalenin İngilizcesi aşağıdaki gibidir:231847  (http://support.microsoft.com/kb/231847/en-us/ )