2012-03-03 21 views
10

Chức năng tiếng ồn Perlin của tôi (thêm 6 octaves của 3D simplex tại 0,75 persistence) tạo mảng mảng 2D là double s.Phân bổ đồng đều từ chức năng nhiễu Perlin fractal trong C#

Các số này được chuẩn hóa thành [-1, 1], với giá trị trung bình là 0. Tôi kẹp chúng để tránh trường hợp ngoại lệ, mà tôi nghĩ là do vấn đề độ chính xác của dấu phẩy động, nhưng tôi khá chắc chắn là đủ tốt để hạn chế tiếng ồn đầu ra chính xác khu phố này trong trường hợp lý tưởng.

Dù sao, đó là tất cả chi tiết. Vấn đề là, đây là một mảng 256-by-256 của tiếng ồn:

enter image description here

các biểu đồ với một sự phù hợp bình thường trông như thế này:

enter image description here

Matlab của lillietest là một chức năng mà áp dụng kiểm tra Lilliefors để xác định xem một tập hợp các số có xuất phát từ phân phối bình thường hay không. Kết quả của tôi là, nhiều lần, 1, có nghĩa là những con số này thường không được phân phối.

Tôi muốn có một chức năng f(x) sao cho khi được áp dụng vào danh sách các giá trị từ hàm tiếng ồn của tôi, kết quả sẽ xuất hiện đồng đều.

Tôi muốn chức năng này có thể triển khai được trong C# và không mất vài phút để chạy.

Một lần nữa, nó không quan trọng nơi các con số đến từ (câu hỏi là về việc chuyển đổi một phân phối thành một phân phối khác, cụ thể là một cái bình thường để thống nhất). Tuy nhiên, việc thực hiện chức năng tiếng ồn của tôi dựa trên thisthis. Bạn có thể tìm thấy các mảng giá trị trên here.

+0

Biểu đồ đó trông khá bình thường, nhưng bạn đang sử dụng đồng bộ và bình thường thay thế cho nhau (chúng không có). Với cách hoạt động của nhiễu perlin, đặc biệt là tính liên tục, phân phối hơi bình thường có nhiều khả năng hơn đồng nhất. – ssube

+0

Vì vậy, bạn có muốn phân phối bình thường hoặc phân phối đồng đều không? Hai cái đó hoàn toàn khác nhau. – svick

+0

Tôi muốn có một bản phân phối đồng đều, tất nhiên. Như bạn có thể thấy, tôi đã nhận được một cái bình thường. @peachykeen Tôi đã làm điều đó ở đâu? Ngoài ra, như đã nêu, phân phối không bình thường theo thử nghiệm Lilliefors. – Superbest

Trả lời

5

Lạ lùng thay tôi chỉ viết một bài viết về rất của bạn câu hỏi:

http://ericlippert.com/2012/02/21/generating-random-non-uniform-data/

Ở đó tôi bàn về cách phân phối đồng đều sang phân phối khác, nhưng tất nhiên bạn có thể sử dụng các kỹ thuật tương tự để chuyển đổi các bản phân phối khác.