Làm cách nào tôi có thể ngăn các lợi thế số nhỏ thống trị sự cân bằng của một cuộc chạm trán?


27

Tôi đã mày mò một thời gian với một trò chơi và tôi gặp một số rắc rối khá lớn với một cái gì đó:

Tôi có hai nhân vật, mỗi nhân vật có thuộc tính (khoảng mười) trong một phạm vi (từ 1 đến 20). Tôi muốn sử dụng các thuộc tính này để tạo ra một 'cuộn' sao cho cuộn cao hơn sẽ thắng cuộc chạm trán cụ thể đó. Điều đáng chú ý là hai nhân vật không gây tổn hại / bảo vệ lẫn nhau. Cả hai đều lăn lộn để xem liệu họ có vượt qua những gì tôi đoán chúng ta có thể gọi là kiểm tra kỹ năng hay không. Cả hai đều lăn để vượt qua / thất bại với một giá trị chung. Họ không tương tác với nhau.

Tuy nhiên, khi một trong các nhân vật thậm chí có lợi thế về số lượng nhỏ, bất kỳ công thức nào tôi đã đưa ra kết quả trong một công cụ vượt trội hơn bao giờ hết đều giành được phần lớn thời gian. Điều này là không mong muốn.

Tôi đã thử tính trọng số của thuộc tính 'phù hợp nhất' cho thử nghiệm ở mức 80% và tổng của các thuộc tính khác ở mức 20%. Tôi cũng đã thử so sánh trung bình để tạo ra sự khác biệt tương đối và sử dụng điều đó để tăng tính yếu hơn. Cả hai cách tiếp cận đều dẫn đến những lợi thế đáng kể mà tôi đang cố gắng loại bỏ (ví dụ: nếu tôi chạy cuộc chạm trán 5.000 lần, nó khá thường xuyên tạo ra một bên chiến thắng tất cả 5.000).

Thêm một thành phần "may mắn" chỉ có vấn đề, có vẻ như, nếu nó có trọng số bằng cách nào đó có lợi cho nhân vật nhỏ hơn, và tôi đã không đạt được sự cân bằng tốt ở đó.

Những cách tiếp cận nào tôi có thể thực hiện để giảm bớt tác động của một lợi thế số nhỏ nhưng vẫn bảo tồn và tăng lợi thế đó khi khoảng cách tương đối trong các thuộc tính tăng lên?


Theo yêu cầu, đây là chi tiết cụ thể tôi có cho đến nay. Một số điều tôi chưa tìm ra để chúng vẫn còn chung chung:

Tại thời điểm này, cuộn được tạo ra như

0.8 * (mainAttribute) + 0.2 (1/3 * subAttA + 1/3 * subAttB * 1/3 subAttC)

Hiện tại, điều này tạo ra số trong khu phố 4.0. Các thuộc tính được tạo ngẫu nhiên giữa các phạm vi được chỉ định. Thử nghiệm hiện tại sử dụng một ký tự có các thuộc tính từ 2 đến 4 và đối thủ nằm trong khoảng từ 3 đến 5. Dự đoán, điều này tạo ra trung bình gần bằng 3 và 4 tương ứng.

Với lợi thế một điểm này, tôi muốn thấy sự mạnh mẽ hơn của hai chiến thắng trong khu vực từ 55% đến 60% thời gian, với tỷ lệ này tăng lên để giành được khoảng 80% thời gian với lợi thế thuộc tính trung bình là 5 hoặc 6, 90% với lợi thế là 7 hoặc 8, để lại một số chỗ cho một chiến thắng không thể xảy ra khi khoảng cách ngày càng lớn. Tôi không muốn có được những chiến thắng được đảm bảo, nhưng có lẽ mọi thứ trở nên rất khó xảy ra - với giai điệu giành 99,5% hoặc 99,6% thời gian khi khoảng cách trở nên rất lớn.

Công thức hiện tại tạo ra một số không ngẫu nhiên. Tính ngẫu nhiên đến từ việc lựa chọn các thuộc tính có liên quan. Không phải tất cả các thuộc tính được sử dụng cho mỗi cuộn. Có thể một trong những thuộc tính yếu hơn nói chung sẽ mạnh hơn trong các lĩnh vực liên quan đến cuộn đó và đánh cắp một chiến thắng. Nhưng, dự đoán, nó hiếm khi xảy ra.

Nỗ lực tiếp theo của tôi là cân nhắc sức mạnh tương đối của họ, bằng cách lấy trung bình tất cả các chỉ số của từng người, chia chúng cho nhau và sử dụng giá trị đó để tăng sức mạnh cho nhân vật nhỏ hơn. Điều này làm mọi thứ trở nên nhẹ nhàng hơn, nhưng vẫn có xu hướng rõ ràng là tạo ra những thứ như 5.000 chiến thắng cho một anh chàng trong số 5.000 người cố gắng.


2
Bạn nói "vai trò được tạo" nhưng sau đó bạn đăng một công thức sẽ luôn tạo một số cố định. Đâu là sự ngẫu nhiên?
Philipp

1
Vì vậy, nếu tôi hiểu bạn một cách chính xác, sự ngẫu nhiên duy nhất trong cơ chế trò chơi của bạn là sự chọn ngẫu nhiên của thuộc tính chính?
Philipp

2
Nhưng như @Philipp ngụ ý, 5000 lần thử sẽ mang lại kết quả chính xác như vậy sau đó? Hoặc bạn có tạo các thuộc tính mới cho mỗi mô phỏng
Felsir

1
Làm thế nào chính xác một trong hai người chiến thắng, nếu họ không tương tác với nhau? Dường như có một số dữ liệu bị thiếu ở đây?
Erik

1
Cuộn mà mỗi người tạo ra được so sánh với mục tiêu họ cần đạt được. Nếu một người đạt được nó và người kia thì không, người đó sẽ thắng. Nếu cả hai đều đạt được nó, cao hơn trong hai chiến thắng. Nếu không đạt được, không có điểm. Thậm chí không có khả năng hòa nhau, họ chia điểm. Bằng cách 'không tương tác', tôi có nghĩa là không đánh hoặc chống lại nhau theo nghĩa truyền thống, vì đó là nơi mà một số cuộc thảo luận ban đầu đang diễn ra.
ffenliv

Câu trả lời:


36

Vấn đề với cách tiếp cận của bạn là bạn quyết định kết quả của trận chiến ngay khi bạn quyết định chỉ số chính. Khi bạn có 4 chỉ số chính, và máy bay chiến đấu chỉ tốt hơn ở một trong số đó, cơ hội chiến thắng của họ luôn là 1 trên 4, bất kể sự khác biệt thực sự lớn đến mức nào. Khi bạn muốn kết quả hạt mịn hơn, bạn cần ngẫu nhiên hạt mịn hơn.

Trước hết, tôi nghĩ bạn có thể giữ lựa chọn ngẫu nhiên cho thuộc tính chính và bạn cũng có thể giữ công thức của mình nếu muốn. Đó là con số đại diện cho bao nhiêu lợi thế của chiến binh này trong cuộc chạm trán cụ thể này. Đối với phần còn lại của bài viết này, tôi sẽ đề cập đến điều này như chỉ power.

Một phương pháp mà tôi đã sử dụng trong khá nhiều trò chơi và phục vụ tôi khá tốt khi đấu tay đôi giữa hai thứ với một thứ nhất định power, là cuộn một số dấu phẩy động ngẫu nhiên giữa 0powercho cả hai và xem ai lăn cao hơn. Dưới đây là danh sách các kết quả dự kiến ​​của phương pháp này. Tỷ lệ phần trăm không được tính toán nhưng được tạo ra bằng thực nghiệm bằng cách chạy 100000 trận đấu trên mỗi kết hợp và số lần lặp và đếm người chiến thắng thường xuyên:

PowerA | PowerB | Win chance of A
  9    |   1    |    94.5%
  8    |   2    |    87.5%
  7    |   3    |    78.6%
  6    |   4    |    66.6%
  5    |   5    |    50.0%
  4    |   6    |    33.3%
  3    |   7    |    21.5%
  2    |   8    |    12.5%
  1    |   9    |    5.5%

Điều hay ho của thuật toán này là nó có tỷ lệ cho dù bạn đang xử lý số lượng lớn như thế nào. Cơ hội 0,3 so với 0,7 tương đương với 3 so với 7, 300 so với 700 hoặc 3.000.000.000 so với 7.000.000.000.

Khi điều này vẫn còn quá khó đoán đối với sở thích của bạn, bạn có thể làm cho trận chiến trở nên dễ đoán hơn bằng cách cuộn nhiều số ngẫu nhiên cho mỗi chiến binh và thêm chúng vào. Do luật của số lượng lớn , nhiều sự kiện ngẫu nhiên thậm chí sẽ xuất hiện và dẫn đến kết quả dễ dự đoán hơn. Đây là một bảng với số lần lặp khác nhau.

| A | B | Iterations
|   |   |       1 |     2 |     3 |     4 |     5 |     6 |     7 |     8 |     9 |
-----------------------------------------------------------------------------------
| 9 | 1 |   94.5% | 99.3% | 99.9% |100.0% |100.0% |100.0% |100.0% |100.0% |100.0% | 
| 8 | 2 |   87.4% | 96.3% | 98.8% | 99.5% | 99.8% |100.0% |100.0% |100.0% |100.0% | 
| 7 | 3 |   78.7% | 89.2% | 94.0% | 96.6% | 97.8% | 98.9% | 99.2% | 99.6% | 99.7% | 
| 6 | 4 |   66.8% | 74.3% | 79.2% | 82.9% | 85.7% | 88.0% | 89.9% | 91.2% | 92.5% | 
| 5 | 5 |   50.0% | 50.0% | 50.0% | 50.0% | 50.0% | 50.0% | 50.0% | 50.0% | 50.0% | 
| 4 | 6 |   33.6% | 25.6% | 20.9% | 17.1% | 14.7% | 12.0% | 10.2% |  8.9% |  7.5% | 
| 3 | 7 |   21.4% | 10.7% |  6.0% |  3.5% |  2.0% |  1.2% |  0.7% |  0.4% |  0.3% | 
| 2 | 8 |   12.7% |  3.7% |  1.2% |  0.4% |  0.1% |  0.1% |  0.0% |  0.0% |  0.0% | 
| 1 | 9 |    5.5% |  0.7% |  0.1% |  0.0% |  0.0% |  0.0% |  0.0% |  0.0% |  0.0% | 

Kết quả 100% và 0% trong bảng trên là một ảo ảnh do sự khác biệt làm tròn. Trừ khi powermột chiến binh chính xác là 0, luôn có khả năng họ thắng. Nó chỉ không xảy ra trong thử nghiệm trên, vì vậy bạn có thể mong đợi nó ở dưới 1: 100000.

Bạn cũng có thể nhận thấy một số bất thường nhỏ có thể được quy cho sự thay đổi tâm trạng của java.lang.Random và có thể không xuất hiện khi bạn chạy lại mã với một hạt giống khác.

Chương trình tôi đã sử dụng để tạo bảng này (Java).

public class Main {

    private static Random random = new Random();
    private static final int SAMPLES = 100000;

    public static void main(String[] args) {        
        for (int i = 1; i < 10; i++) {
            double powerA = 10.0 - i;
            double powerB = i;
            System.out.print("| ");
            System.out.print((int)powerA);
            System.out.print(" | ");
            System.out.print((int)powerB);
            System.out.print(" |   ");

            for (int iterations = 1; iterations < 10; iterations++) {
                int wins = 0;
                for (int j = 0; j < SAMPLES; j++) {
                    if (fight(powerA, powerB, iterations)) wins++;
                }
                System.out.print(String.format("%2.1f", 100.0 * (double)wins / (double)SAMPLES));
                System.out.print("% | ");
            }
            System.out.print("\n");
        }       
    }

    private static boolean fight(double powerA, double powerB, int iterations) {        
        double sumA = 0.0f;
        double sumB = 0.0f;     
        for (int i = 0; i < iterations; i++) {
            sumA += random.nextDouble() * powerA;
            sumB += random.nextDouble() * powerB;

        }       
        return sumA > sumB;
    }
}

Nếu bạn muốn sử dụng mã này trong trò chơi của mình, nó được cấp phép theo Giấy phép Công cộng WTF Phiên bản 2 do Sam Hocevar xuất bản .


Đây là một cách tiếp cận thú vị. Trong một số nỗ lực của tôi, tôi đã đi được nửa đường đến đây. Tôi sẽ kết nối nó và thử nó. Cảm ơn nhiều.
ffenliv

10
Tỷ lệ phần trăm trong bảng đầu tiên của bạn có thể được tính chính xác như 1 - powerA / ( 2 * powerB ).
Kyle

2
@Kyle Điều đó chỉ hoạt động miễn là powerA < powerB. Khi powerA lớn hơn, bạn cần chuyển sang powerB / (2 * powerA).
Dorus

1
Tôi không chắc chắn StackExchange ToS cho phép bạn đi lạc khỏi giấy phép trang web bắt buộc về nội dung và mã, ngay cả khi giấy phép của bạn được cho phép nhiều hơn so với giấy phép của họ. Tất nhiên, không thể tìm thấy nếu đó là MIT đề xuất hay vẫn là CC.
Lars Viklund

5
@LarsViklund Bạn đang bắt đầu một cuộc thảo luận ngoài chủ đề ở đây, nhưng không, điều này không chính xác. Giấy phép cho stackexchange không độc quyền, điều đó có nghĩa là tôi vẫn được tự do trao tặng tài sản trí tuệ của mình theo bất kỳ điều khoản cấp phép nào khác khi tôi muốn. Đóng góp của tôi được cấp phép kép theo CC-BY-SA (theo ủy quyền của Stackexchange) và WTFPL. Bạn có thể chọn theo điều kiện bạn muốn sử dụng đóng góp của tôi.
Philipp

13

Sai lầm của bạn là sử dụng phương pháp "xúc xắc". Bạn đang sử dụng máy tính, bạn có thể sử dụng bất kỳ hệ thống nào bạn thích. Tạo một bảng biến sự khác biệt về giá trị thành cơ hội% tuổi để giành chiến thắng và sau đó bạn có thể đặt các giá trị thành hoàn toàn bất cứ điều gì bạn thích, ví dụ:

Difference (A-B) | %chance A wins
-----------------|---------------
+5 or greater    | 100%
+4               | 95%
+3               | 85%
+2               | 70%
+1               | 55%
0                | 50%

(Bạn chỉ cần làm một nửa bảng, chỉ cần luôn chọn A là bảng có chỉ số cao hơn)

Rõ ràng, những con số này chỉ là một ví dụ, bạn có thể làm cho nó tuân theo bất kỳ phân phối nào làm bạn hài lòng.


2
Mặc dù tôi hiện đang làm việc với một hệ thống dựa trên câu trả lời được chấp nhận, nhưng điều này khá đơn giản và cũng có thể là một giải pháp tốt cho tôi. Tôi biết StackExchange tốt của ol sẽ thông qua cho tôi.
ffenliv

5

Đây là một câu hỏi khá sâu sắc, trung thực, từ quan điểm cơ học trò chơi. Nhưng có một vài điều có thể giúp đỡ.

Đầu tiên, đây là lý do tại sao hầu hết các trò chơi có một thành phần riêng biệt để đánh và gây sát thương, trong đó có một "cuộn" để xem bạn có đánh sát thương hay không, sau đó "lăn" vào bảng sát thương hoặc phạm vi cho nhân vật đã cho. Điều này cũng dẫn đến một số nguyên mẫu tiêu chuẩn trong các thể loại, trong đó bạn có thể có các nhân vật nhỏ hơn, nhanh hơn, có ít điểm nhấn hơn nhưng gây sát thương nhiều hơn (pháp sư pháo thủy tinh, một số loại rogy) và các nhân vật bọc thép lớn hơn, ít gây sát thương hơn (xe tăng, chiến binh ).

Điều này dẫn đến sự cân bằng tự nhiên trong đó nhân vật nhỏ hơn có thể mỏng manh, nhưng tránh bị tấn công thường xuyên do khả năng loại nhanh nhẹn, và cũng phát triển sân chơi bằng cách gây sát thương nhiều hơn (phép thuật hoặc hiệu ứng độc gây sát thương thời gian). Xe tăng có thể chậm hơn và bị tấn công thường xuyên hơn, nhưng thường có sức khỏe hoặc điểm đánh rất lớn để duy trì, tuy nhiên có xu hướng gây sát thương ít hơn mỗi lần đánh (hoặc sát thương mỗi giây).

Bối cảnh cho những điều này là lý do tại sao nhiều trò chơi liên tục trải qua việc cân bằng vũ khí và các lớp và chỉ số. World hoặc Warcraft, Destiny, Diablo, Battlefield: bất kỳ loại trò chơi nào trong bất kỳ thể loại nào cũng thường trải qua sự cân bằng và điều chỉnh theo thời gian.

Đây có thể không phải là một câu trả lời trực tiếp, nhưng bạn đã yêu cầu những ý tưởng chung. Vì vậy, hãy cũng đánh giá hệ thống chơi.

Làm thế nào để các thuộc tính chức năng? Nếu tất cả những thứ khác đều bằng nhau (không có nguyên mẫu, không có áo giáp hoặc vũ khí tốt hơn hoặc không có gì), thì bất kỳ lợi ích nhỏ nào cũng hoàn toàn có khả năng ném mọi thứ có lợi cho một bên. Trong khi thêm các khía cạnh để chống lại sự phức tạp của bất kỳ hệ thống nào, nó cũng cho phép linh hoạt hơn.


Bên cạnh đó, tôi nghĩ rằng đây là một câu hỏi xuất sắc và có thể dẫn đến một số cuộc thảo luận cơ học trò chơi rất thú vị. Có thể điều này cuối cùng có thể trở thành dựa trên quan điểm, vì vậy điều quan trọng là phải cẩn thận với những tiếp tuyến như vậy (trò chơi này tốt hơn trò chơi này, v.v.), nhưng có một số nguyên tắc cơ bản có thể làm sáng tỏ khi nhiều người đăng bài.
Jesse Williams

Thật thú vị, tôi đã có một thợ máy 'đánh' và 'gây sát thương' đi trước, nhưng đã loại bỏ nó vì lý do tôi không còn nhớ nữa (và đó chỉ là ngày hôm qua. Bộ nhớ của tôi hơi ... kém) Tôi nên rõ ràng, các nhân vật không tấn công / phòng thủ lẫn nhau. Không có thành phần thiệt hại. Đó là kiểm tra kỹ năng, trong đó cả hai được kiểm tra theo một giá trị chung để xem liệu cuộn có vượt qua không .. Không có sự tương tác giữa hai đối thủ đang cạnh tranh.
ffenliv

2

Có hai điều lớn.

Đầu tiên, hãy nhớ bạn đang ở trên máy tính. Bạn có thể làm bất kỳ hệ thống nào bạn muốn. Không cần giới hạn bản thân trong một cuộn d20, mặc dù điều này dễ hiểu cho người chơi. Những thứ như gieo xúc xắc 6 d6 rất dễ dàng trên máy tính và chúng cho kết quả ngẫu nhiên ít hơn nhiều.

Thứ hai, nhìn vào các hệ thống khác như D & D, rõ ràng là chúng chỉ đơn giản là giảm bớt tác dụng của các thuộc tính rất nhiều. Thay vì có chỉ số cơ sở của bạn thêm 80% giá trị của nó vào quy tắc, hãy thu nhỏ nó xuống và làm cho phần bổ sung của nó trở nên tinh tế hơn. Ví dụ, trong D & D nếu bạn có 18 kỹ năng khéo léo, bạn chỉ nhận được 4 như một phần thưởng cho lớp áo giáp của mình.

Vì vậy, trong ngắn hạn, tất cả những gì bạn cần làm là thu nhỏ tên miền của bạn để phù hợp với phạm vi của bạn hơn. Nhưng về mặt chất lượng, tôi sẽ nghĩ rằng việc nhìn vào các hệ thống khác và đưa ra những thứ dường như ít tính toán hơn sẽ tạo ra một hệ thống thỏa mãn hơn cho người chơi.


1d20 hoặc 6d6 hoặc 5d4 - kết quả không nhiều hoặc ít ngẫu nhiên, bạn chỉ thay đổi phạm vi. Ngẫu nhiên là ngẫu nhiên. Thu nhỏ phạm vi và miền không đủ để cân bằng một hệ thống. Nó có khả năng chỉ rút ra những thứ lâu hơn.
Jesse Williams

8
@JlieWilliams điều đó không đúng. 1d20 có cơ hội như nhau để có được bất kỳ giá trị nào có thể. Với 5d4, bạn có nhiều khả năng nhận được 12 hoặc 13 hơn so với bạn nhận được 20.
Rob Watts

Nhiều cuộn cũng giúp che giấu các lỗ hổng trong trình tạo số, vì vậy nó đặc biệt quan trọng trên máy tính. Trong thực tế, việc kết hợp các cuộn ở mức độ bitwise là cơ sở của nhiều máy phát điện.
Yudrist

Tôi đứng sửa.
Jesse Williams

3
@RobWatts vẫn không ít nhiều ngẫu nhiên, đó chỉ là một bản phân phối khác. Có thông tin về các "cuộn" trước đó không cho phép bạn đưa ra dự đoán tốt hơn về kết quả trong tương lai (bỏ qua các sai sót trong RNG), vì vậy nó chỉ là ngẫu nhiên.
chbaker0

1

Làm thế nào về điều này: Thêm một hằng số, ví dụ 1000, cho tất cả các thuộc tính liên quan. Sau đó, sự khác biệt tương đối trở nên rất nhỏ.


1

Biết số của bạn

Thêm một chút vào câu trả lời của Philipp , cụ thể là rand [x] so với rand [y] có thể không luôn tạo ra những gì người ta mong đợi. Bên dưới một bảng trong đó chúng ta so sánh A với B. Cả A và B đều có các giá trị 1 ... 10. Chúng tôi so sánh theo hai cách (lưu ý: rand () trong trường hợp này tạo ra các số nguyên, nghĩa là cuộn):

  1. rand [A]> rand [B]
  2. rand [A] rand [B] (nghĩa là lớn hơn hoặc bằng)

Ngoài ra, chúng tôi so sánh

  1. rand [A * 1000000]> rand [B * 1000000]
    (trong trường hợp này không liên quan cho dù đó là> hay vì chúng rất gần nhau). Những con số lớn là trong ngoặc đơn.

Các tế bào giữ% 's. Mỗi kết quả được giữ 1 triệu lần lặp (được thực hiện bằng cách sử dụng Dyalog APL ).

┌────────────┬────────────┬────────────┬────────────┬────────────┬────────────┬────────────┬────────────┬────────────┬────────────┬────────────┐
 A      B  1 (1000000)│ 2 (2000000)│ 3 (3000000)│ 4 (4000000)│ 5 (5000000)│ 6 (6000000)│ 7 (7000000)│ 8 (8000000)│ 9 (9000000)│10(10000000)│
├────────────┼────────────┼────────────┼────────────┼────────────┼────────────┼────────────┼────────────┼────────────┼────────────┼────────────┤
 1 (1000000)│ >0(50) 100  >0(25) 50  >0(17) 33  >0(13) 25  >0(10) 20   >0(8) 17   >0(7) 14   >0(6) 13   >0(6) 11   >0(5) 10
├────────────┼────────────┼────────────┼────────────┼────────────┼────────────┼────────────┼────────────┼────────────┼────────────┼────────────┤
 2 (2000000)│>50(75) 100 >25(50) 75 >17(33) 50 >12(25) 38 >10(20) 30  >8(17) 25  >7(14) 21  >6(13) 19  >6(11) 17  >5(10) 15
├────────────┼────────────┼────────────┼────────────┼────────────┼────────────┼────────────┼────────────┼────────────┼────────────┼────────────┤
 3 (3000000)│>67(83) 100 >50(67) 83 >33(50) 67 >25(37) 50 >20(30) 40 >17(25) 33 >14(21) 29 >12(19) 25 >11(17) 22 >10(15) 20
├────────────┼────────────┼────────────┼────────────┼────────────┼────────────┼────────────┼────────────┼────────────┼────────────┼────────────┤
 4 (4000000)│>75(87) 100 >62(75) 88 >50(62) 75 >37(50) 63 >30(40) 50 >25(33) 42 >21(29) 36 >19(25) 31 >17(22) 28 >15(20) 25
├────────────┼────────────┼────────────┼────────────┼────────────┼────────────┼────────────┼────────────┼────────────┼────────────┼────────────┤
 5 (5000000)│>80(90) 100 >70(80) 90 >60(70) 80 >50(60) 70 >40(50) 60 >33(42) 50 >29(36) 43 >25(31) 38 >22(28) 33 >20(25) 30
├────────────┼────────────┼────────────┼────────────┼────────────┼────────────┼────────────┼────────────┼────────────┼────────────┼────────────┤
 6 (6000000)│>83(92) 100 >75(83) 92 >67(75) 83 >58(67) 75 >50(58) 67 >42(50) 58 >36(43) 50 >31(38) 44 >28(33) 39 >25(30) 35
├────────────┼────────────┼────────────┼────────────┼────────────┼────────────┼────────────┼────────────┼────────────┼────────────┼────────────┤
 7 (7000000)│>86(93) 100 >79(86) 93 >71(79) 86 >64(71) 79 >57(64) 71 >50(57) 64 >43(50) 57 >38(44) 50 >33(39) 44 >30(35) 40
├────────────┼────────────┼────────────┼────────────┼────────────┼────────────┼────────────┼────────────┼────────────┼────────────┼────────────┤
 8 (8000000)│>88(94) 100 >81(87) 94 >75(81) 87 >69(75) 81 >63(69) 75 >56(62) 69 >50(56) 62 >44(50) 56 >39(44) 50 >35(40) 45
├────────────┼────────────┼────────────┼────────────┼────────────┼────────────┼────────────┼────────────┼────────────┼────────────┼────────────┤
 9 (9000000)│>89(94) 100 >83(89) 94 >78(83) 89 >72(78) 83 >67(72) 78 >61(67) 72 >55(61) 67 >50(56) 61 >44(50) 56 >40(45) 50
├────────────┼────────────┼────────────┼────────────┼────────────┼────────────┼────────────┼────────────┼────────────┼────────────┼────────────┤
10(10000000)│>90(95) 100 >85(90) 95 >80(85) 90 >75(80) 85 >70(75) 80 >65(70) 75 >60(65) 70 >55(60) 65 >50(55) 60 >45(50) 55
└────────────┴────────────┴────────────┴────────────┴────────────┴────────────┴────────────┴────────────┴────────────┴────────────┴────────────┘

Nếu nhìn vào A = 2 và B = 3 (và 1 triệu bài kiểm tra):

  • rand (2) lớn hơn rand (3) trong 17% trường hợp
  • rand (2000000) lớn hơn rand (3000000) trong 33% các trường hợp (chú ý chia tỷ lệ ./ .. làm tròn số nguyên)
  • rand (2) lớn hơn hoặc bằng rand (3) trong 50% trường hợp
  • (rand (2000000) cũng lớn hơn hoặc bằng rand (3000000) trong 50% trường hợp)

Điều ngạc nhiên có thể là:

  • rand (2)> rand (3) chỉ trong 17% trường hợp
  • rand (10)> rand (10) trong 45% trường hợp
  • rand (6)> rand (5) mỗi lần

Trên thực tế tôi có thể giải quyết Q này một cách khác nhau, chỉ bằng cách gõ tay một bảng 10x10 với tỷ lệ phần trăm mong muốn tốt đẹp (có thể ai cũng muốn có sự bất thường không?). Sau đó, nếu cần nội suy giữa hai giá trị, để có được tỷ lệ phần trăm chính xác, giả sử đó là lý do nào đó 53. Sau đó, thật dễ dàng để tạo ra một cú đánh có khả năng 53%, 0 hoặc 1, chỉ bằng cách thực hiện rand (100) và thử nghiệm nếu nó nhỏ hơn hoặc bằng 53 :-).

Đó là dọc theo dòng Jack Aidley đề cập.


1
Bạn đang sử dụng một trình tạo số ngẫu nhiên tạo ra số nguyên? Câu trả lời của tôi sử dụng RNG tạo ra các số dấu phẩy động có độ chính xác kép giữa 0.01.0. Trong trường hợp đó, sự khác biệt giữa >>=không đáng kể. Bạn có thể muốn chỉ ra điều đó.
Philipp

Vâng, đó là một phần của thông điệp dự định, để chỉ ra hành vi khác nhau của không gian số, vd. số nguyên giá trị nhỏ (độ chi tiết thô) so với số nguyên giá trị lớn (và thực tế cũng nổi) với độ chi tiết mịn. Tôi sẽ chèn "số nguyên" ở đâu đó, thx để xác định chính xác. Tôi thực sự đã chỉ ra rằng sự không phù hợp: "(trong trường hợp này là không liên quan cho dù đó là> hay vì chúng rất gần"). Thông thường các con số tìm thấy các giá trị đáng ngạc nhiên (đối với tâm trí hman) nếu hệ thống không được khuyến khích tìm kiếm sự cân bằng. Nói chung, ofc, không nhất thiết trong trường hợp này.
Bão tố

0

Cách tiếp cận truyền thống mà một số câu trả lời đã tham chiếu ngầm nhưng không ai thực sự đánh vần là nhiệm vụ yêu cầu một cuộn chết cố định và thêm một công cụ sửa đổi khả năng xuất phát từ số liệu thống kê của bạn.

Ví dụ: nếu hai người chơi làm theo quy trình:

  • Cuộn chết 14 mặt
  • Thêm công cụ sửa đổi của họ vào cuộn chết

và lặp lại cho đến khi một bên đánh bại bên kia, sau đó bạn nhận được các số trong phạm vi của mình: đây là tỷ lệ chiến thắng với một lợi thế số đã cho công cụ sửa đổi của họ:

0   50%
1   57%
2   64%
3   70%
4   76%
5   81%
6   85%
7   89%
8   92%
9   95%
10  97%

0

Các nhân vật không thách thức nhau cho uy quyền tối cao. Họ thách thức một yêu cầu. Nếu cả hai đều vượt qua yêu cầu. Ai thắng? Tôi ngạc nhiên khi bạn đã thách thức logic đến mức bạn thậm chí đã tính toán với nó.

Dù bằng cách nào, đây là hai điều có thể giúp bạn một số điều tốt.

Thắng lợi trong trường hợp có lợi thế:

NẾU vượt qua thanh kiểm tra / kỹ năng là một cuộn 10. Một Rolls 40. B Rolls 42. NẾU chỉ có một người phải thắng. Bắt đầu từ một chiến thắng A 50% / B 50% bằng nhau. Bạn có thể thêm% để giành cơ hội dựa trên số lượng lợi thế. Cuộn B có (42-40) / 40 = 5% lợi thế về mặt cuộn. Thêm nó trực tiếp làm cho cơ hội giành chiến thắng của B 55%. Hoặc bạn có thể xác định cơ hội giành chiến thắng tùy chỉnh trên mỗi phần trăm lợi thế. Nói cho mỗi 100% lợi thế bạn thêm 10% cơ hội để giành chiến thắng. Vì vậy, nếu A Rolls 10 và B lăn 20. Sau đó A thắng 40% và B thắng 60% các trường hợp.

Khái niệm ngẫu nhiên công bằng:

Thực hiện 30% cơ hội tiêu chuẩn để giành chiến thắng, cuối cùng bạn có thể giành được 38 séc trong số 100.

Một số người muốn có thêm một bước công bằng và đảm bảo rằng 30% cơ hội luôn thắng chính xác 30 trên 100 cuộc chạm trán và đủ để ngẫu nhiên không biết cuộc chạm trán nào trong chuỗi là thắng và thua.

Điều này đặc biệt hữu ích cho các nền kinh tế trò chơi được tính toán tốt. Bởi vì một chỉ số ngẫu nhiên 70% cơ hội để giành chiến thắng. Nói 70% cơ hội cho một mob giảm 5 vàng. Các mob có thể sẽ giảm vàng 81 lần trong số 100. Điều này làm giảm thu nhập / chi phí mất cân bằng. Và tùy thuộc vào số lượng thực thể / trường hợp sử dụng lạm phát cuộn và / hoặc thiếu hụt như vậy chắc chắn được tạo ra. Tất nhiên, nhiều người thậm chí không có ước tính sơ bộ về các khoản đầu vào / chi phí đầy đủ của nền kinh tế của họ. Rất nhiều người đủ để làm "hầu hết" các điểm kinh tế. Và để lại một số biến thế hệ không được tính toán và xếp chồng chênh lệch theo thời gian ngay cả với tính ngẫu nhiên hợp lý.

Lạm phát và thiếu hụt không phải là vấn đề của riêng họ. Bạn có thể quản lý tính ngẫu nhiên không công bằng và thậm chí các biến không lường trước được nếu nền kinh tế của bạn được thiết lập để đáp ứng đầy đủ với lạm phát và thiếu hụt.

Tại sao phải bận tâm với điều này khi luật số lượng lớn phát triển mọi thứ trong thời gian dài?

Không phải mọi môi trường đều có thể giữ lại hành vi thiết kế của nó trong khi vẫn tiếp tục phát triển ...


Tôi đặc biệt thích câu cuối cùng. Lấy từ nơi khác: Tôi tin rằng ví dụ tỷ lệ in: out của Viking Lotto là ca 4: 1 về lâu dài (nơi người ta có thể thay thế "dài" bằng "lớn"); nó có một hành vi thiết kế gần như gây tranh cãi (nhưng được xác định rõ) và nó hoạt động. Người ta không thể thực hiện phép toán bên dưới trừ khi hành vi thiết kế được xác định chính xác trước. Các con số có xu hướng không được kiểm soát mà không có sự kiểm soát ...
Stormwind

@Stormwind tất nhiên. Nếu thiết kế / lý thuyết thiếu - toán học là vô ích. Nó nhưng là một công cụ. Tôi đã thấy các nhà thiết kế với trình độ toán lớp 5 kéo nền kinh tế tốt. Họ chỉ đơn giản là ánh xạ những gì họ muốn làm một cách logic và đi đến những người toán học (thường là các lập trình viên) để biết các công cụ / lời khuyên làm thế nào để thực hiện các bit toán học. Nó bằng cách nào đó vẫn quản lý không rõ ràng đối với mọi người - Bạn càng gặp nhiều vấn đề với kế hoạch chi tiết - bạn sẽ càng thấy đau đầu hơn trong xây dựng. Chỉ cần lấy một số hệ thống và tinh chỉnh nó là thiếu điểm hoàn toàn. Nếu bạn chỉ giải quyết bất cứ điều gì làm việc đầu tiên, nó không thực sự sáng tạo.
helena4
Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.