Seni doğru anlarsam, sadece küçük boyutlu n boyutlu uzaydaki noktalar kısıtlamalarınızı karşılar.
İlk kısıtlamanız, bunu hiperferin iç kısmıyla sınırlar, bu da bana comp.graphics.algoritmalar hakkında SSS "Küre üzerinde tekdüze rastgele noktalar" ve 3 boyutlu birim topunda eşit dağılmış noktalar nasıl oluşturulur?
İkinci kısıtlama, hiper kürenin biraz dışına çıkar ve diğer kısıtlamalar, kısıtlamalarınızı karşılayan hacimde daha da az ısınır.
Sanırım yapılacak en basit şey SSS tarafından önerilen yaklaşımlardan biri:
- tüm birimi içerdiğinden emin olduğumuz, eksenle hizalanmış bazı sınırlayıcı kutuları seçin . Bu durumda, -c <a_1 <c, -c <a_2 <c, ... -c <a_n <c, ilk kısıtlama tarafından açıklanan hiper küreyi içerdiğinden ve diğer kısıtlamalar titremeye devam ettiğinden, tüm kısıtlanmış birimi içerir uzakta.
- Algoritma, sınırlayıcı kutudaki noktaları eşit olarak seçer. Bu durumda, algoritma bağımsız olarak bir aday vektörün her bir koordinatını -c ila + c arasındaki bağımsız olarak eşit dağıtılmış bazı rasgele sayılara ayarlar. (Bu birim boyunca eşit yoğunlukta dağılmış noktalar istediğinizi varsayıyorum. Bunu yapmak için bir nedeniniz varsa algoritmanın Poisson dağılımı veya başka bir düzgün olmayan dağılım ile bazı veya tüm koordinatları seçmesini sağlayabilirsiniz).
- Bir aday vektörünüz olduğunda, her bir kısıtlamayı kontrol edin. Bunlardan herhangi biri başarısız olursa, geri dönün ve başka bir nokta seçin.
- Bir aday vektörünüz olduğunda, daha sonra kullanmak üzere bir yerde saklayın.
- Yeterli depolanmış vektörünüz yoksa, geri dönüp başka bir vektör oluşturmaya çalışın.
Yeterince yüksek kaliteli rasgele sayı üreteci ile, (beklenen) tekdüze yoğunluk ile ölçütlerinizi karşılayan bir dizi kayıtlı koordinat sağlar.
Ne yazık ki, nispeten yüksek bir boyutsallığınız n varsa (yani, her vektörü nispeten uzun bir koordinat listesinden oluşturursanız), yazılı kürenin (çok daha az azaltılmış hacminiz) toplam hacminin şaşırtıcı derecede küçük bir kısmı vardır. toplam sınırlama kutusu, bu nedenle çoğu kısıtlı alanınızın dışında bir nokta bulmadan önce çoğu kısıtlı alanınızın dışında reddedilen noktalar oluşturan birçok yinelemenin yürütülmesi gerekebilir. Günümüzde bilgisayarlar oldukça hızlı olduğu için bu yeterince hızlı olacak mı?