สามารถประมาณค่าจริงเชิงบวกเป็น $2^m/3^n$ ด้วย $(m,n)$ ใหญ่พอ?

Jan 12 2021

การคาดคะเน
มีจำนวนเต็มบวกอยู่$(m,n)$ มากพอสำหรับจำนวนจริงที่เป็นบวก $r$ และข้อผิดพลาดที่กำหนด $\epsilon$ : $$ \left| r - \frac{2^m}{3^n} \right| < \epsilon $$มีหลักฐานเชิงตัวเลขสำหรับการคาดเดานี้ ฉันเหนื่อย$r = \sqrt{2}$ และ $\epsilon = 10^{-3}$.
ด้านล่างนี้เป็นโปรแกรม Delphi Pascal เล็ก ๆ ที่มีเอาต์พุตประกอบ
แต่ .. ใครบางคนสามารถพิสูจน์การคาดเดาได้หรือไม่?

โปรแกรมออกจากกัน
การทดสอบขั้นตอน (r: double; eps: double); หลากหลาย a: สองครั้ง; m, n: จำนวนเต็ม; เริ่ม A: = 1; m: = 0; n = 0; ในขณะที่ทำจริง เริ่ม ถ้า <r แล้ว เริ่ม m: = m + 1; A: = a * 2; จุดจบอื่น ๆ เริ่มต้น n: = n + 1; a: = a / 3; จบ; ถ้า abs (ra) <eps แล้ว Break; จบ; Writeln (r, '= 2 ^', ม, '/ 3 ^', n, '=', ก); จบ;
เริ่ม ทดสอบ (sqrt (2), 1.E-3); จบ.

เอาท์พุต:

 1.41421356237310E + 0000 = 2 ^ 243/3 ^ 153 = 1.41493657935359E + 0000

อัปเดต
คำตอบของlhfดูเหมือนเป็นการพิสูจน์ที่รัดกุมมาก แต่สำหรับฉัน - ในฐานะนักฟิสิกส์ที่เกษียณแล้วจากการศึกษา - มันเกินความเข้าใจเล็กน้อย
นอกจากนี้ยังทิ้งปัญหาบางอย่างไว้โดยไม่ถูกแตะต้อง อาจมีคนถามเช่นว่ามีค่าประมาณหรือไม่$m$ และ $n$ เมื่อไหร่ $r$ และ $\epsilon$ ได้รับ

บันทึก. คำถามนี้สามารถกำหนดเป็น: จริงเชิงบวกใด ๆ สามารถประมาณได้ว่าเป็น$3^m/2^n$ ด้วย $(m,n)$ใหญ่พอ? ซึ่งเหมือนกับการยอมให้จำนวนเต็มลบกับสูตรดั้งเดิม ในรูปแบบนี้ก็แสดงให้เห็นบางอย่างที่คล้ายคลึง (ใน) ที่มีชื่อเสียงปัญหา Collatz

แก้ไข
ตามคำตอบที่แนะนำวิธีการที่มีลอการิทึมอาจมีประสิทธิภาพมากขึ้น:

โปรแกรม anders;
ขั้นตอน proef (r: double; eps: double); หลากหลาย a, l2, l3, lr: สองครั้ง; m, n: จำนวนเต็ม; เริ่ม l2: = ln (2); l3: = ln (3); lr: = ln (r); A: = 0; m: = 0; n = 0; ในขณะที่ทำจริง เริ่ม a: = m * l2 - n * l3 - lr; ถ้า abs (a) <eps แล้ว Break; ถ้า <0 แล้ว m: = m + 1 else n: = n + 1; จบ; Writeln (r, '= 2 ^', m, '/ 3 ^', n, '=', exp (a) * r); จบ;
เริ่ม proef (sqrt (2), 1.E-3); proef (sqrt (2), 1.E-9); จบ.

เอาท์พุต:

 1.41421356237310E + 0000 = 2 ^ 243/3 ^ 153 = 1.41493657935356E + 0000
 1.41421356237310E + 0000 = 2 ^ 911485507/3 ^ 575083326 = 1.41421356125035E + 0000

บรรทัดแรกในเอาต์พุตเกือบจะเหมือนกับผลลัพธ์ที่ได้รับก่อนหน้านี้
บรรทัดสุดท้ายในผลลัพธ์แสดงให้เห็นว่าแนวทางหลังมีประสิทธิภาพมากกว่า
ข้อผิดพลาดมีบทบาทเหมือนกันในทั้งสองวิธี โอ้เกือบ. ลองมาดูสถานที่ที่เป็น 'Break's โปรแกรมแรก:$$ \left| r - \frac{2^m}{3^n} \right| < \epsilon $$ โปรแกรมที่สอง: $$ -\epsilon < m\ln(2) - n\ln(3) - \ln(r) < +\epsilon \\ \ln(1-\epsilon) < \ln\left(\frac{2^m/3^n}{r}\right) < \ln(1+\epsilon) \\ -\epsilon < \frac{2^m/3^n}{r} - 1 < +\epsilon \\ \left| r - \frac{2^m}{3^n} \right| < \epsilon.r $$ ดังนั้น $\epsilon$ในโปรแกรมแรกเป็นข้อผิดพลาดสัมบูรณ์ในขณะที่$\epsilon$ในโปรแกรมที่สองเป็นข้อผิดพลาดสัมพัทธ์

เรื่องราวต่อไปที่:
สามารถใช้ต้นไม้ Stern-Brocot เพื่อการบรรจบกันได้ดีขึ้นของ$2^m/3^n$เหรอ?

คำตอบ

4 PM2Ring Jan 13 2021 at 06:37

ใช่มีวิธีแก้ไขเสมอ $(m, n)$ สำหรับความจริงเชิงบวกใด ๆ $r$ และ $\epsilon$ สำหรับ $$\left| r - \frac{2^m}{3^n} \right| < \epsilon$$และมีมากวิธีที่มีประสิทธิภาพมากขึ้นในการหาแนวทางแก้ไขปัญหาเหล่านั้นกว่าก้าวผ่าน$m$ และ $n$ ค่าทีละรายการ

เรามี $$r \approx 2^m/3^n$$ การลอการิทึม $$\log r \approx m\log 2 - n\log 3$$ $$\log r/\log 2\approx m - n\log 3 / \log 2$$ กล่าวคือ $$\log_2 r\approx m - n\log_2 3$$

[อนึ่ง $$1 = \frac m{\log_2r}-\frac n{\log_3r}$$ ซึ่งเป็นบรรทัดในไฟล์ $(m,n)$ เครื่องบินด้วย $m$ สกัดกั้น $\log_2r$ และ $n$ สกัดกั้น $-\log_3r$. เราต้องการค้นหาเมื่อบรรทัดนั้นผ่านเข้าใกล้จำนวนเต็ม$(m, n)$ จุดขัดแตะ].

เราสามารถหาค่าประมาณอย่างมีเหตุผลของลอการิทึมฐาน 2 ทั้งสองนั้นไปยังความแม่นยำที่ต้องการได้ อย่างไรก็ตามเพื่อตอบสนองสมการนั้นด้วยจำนวนเต็ม $m$ และ $n$ตัวส่วนของการประมาณของเราจะต้องเหมาะสมกัน

ปล่อย $$\log_2 r = f \approx s/t$$ และ $$\log_2 3 \approx p/q$$ โดยเศษส่วนอยู่ในเงื่อนไขต่ำสุดกล่าวคือ $\gcd(s,t)=gcd(p,q)=1$.

แล้ว $$\frac st = m - n \frac pq$$ $$sq = (qm - pn)t$$ ด้วยประการฉะนี้ $t|sq$. แต่$s$ & $t$ เป็นอาชญากรรมดังนั้น $t|q$.

ปล่อย $q=tk$. $$f \approx \frac st = \frac{sk}{tk}=\frac{sk}{q}=\frac dq$$ สำหรับจำนวนเต็ม $d$.

ดังนั้นสำหรับการประมาณที่กำหนด $\frac pq$ ถึง $\log_2 3$การประมาณอย่างมีเหตุผลที่ดีที่สุดสำหรับ $f$ ด้วยตัวหารที่สมน้ำสมเนื้อคือ $\frac{d_0}q$ และ $\frac{d_1}q$, ที่ไหน $d_0=\lfloor fq\rfloor$ และ $d_1=\lceil fq\rceil$. นั่นคือ,$$\frac{d_0}q \le f \le \frac{d_1}q$$ ถ้า $f$ เป็นเหตุเป็นผล (เช่นเมื่อ $r=\sqrt 2$) แล้ว $d_0$ และ $d_1$ อาจจะเท่ากัน

ดังนั้นสำหรับ $p$ & $q$ เราต้องหาจำนวนเต็ม $m$ & $n$ ที่แก้สมการแก้ไขของเรา $$\frac dq = m - n \frac pq$$ $$d=qm-pn$$ สำหรับทั้ง $d_0$ และ $d_1$. มีคำตอบสำหรับจำนวนเต็มใด ๆ$d$ เพราะ $p$ & $q$เป็น coprime และการแก้ปัญหาเหล่านั้นสามารถพบได้โดยใช้ขั้นตอนวิธี Euclidean ขยาย

แต่เราต้องหาสิ่งที่เหมาะสมด้วย $p$ & $q$. ซึ่งสามารถทำได้โดยใช้การบรรจบกันของการขยายเศษส่วนอย่างต่อเนื่องของ$\log_2 3$. อัลกอริทึมมาตรฐานสำหรับการคำนวณเศษส่วนต่อเนื่องมีความเกี่ยวข้องอย่างใกล้ชิดกับอัลกอริทึมแบบยุคลิดที่ขยายออกไปและตามที่บทความ Wikipedia อธิบายไว้ (ในทฤษฎีบท 3) หาก$n$การบรรจบกันของเศษส่วนต่อเนื่องคือ $\frac{h_n}{k_n}$ แล้ว $$k_nh_{n-1} - k_{n-1}h_n = (-1)^n$$ ซึ่งทำให้เราพบ $m$ และ $n$ โดยไม่ต้องทำการคำนวณอัลกอริทึมแบบยุคลิดแยกต่างหาก

เศษส่วนต่อเนื่องมาบรรจบกัน $\frac hk$ ของตัวเลข $x$ ให้การประมาณอย่างมีเหตุผลที่ดีที่สุด $x$ สำหรับตัวส่วนใด ๆ $\le k$. ข้อผิดพลาดคือ$$\left|x - \frac hk\right| \le \frac 1{k^2}$$และมักจะดีขึ้นมาก ในทางตรงกันข้ามข้อผิดพลาดสำหรับการประมาณ$\frac hk$ โดยมีตัวส่วน "สุ่ม" (กล่าวคือไม่ใช่เศษส่วนต่อเนื่องมาบรรจบกัน) โดยทั่วไปจะอยู่รอบ ๆ $\frac 1{2k}$.

น่าเสียดายที่เนื่องจากความต้องการตัวส่วนที่สมน้ำสมเนื้อในการประมาณของเรากับลอการิทึมทั้งสองเราจึงไม่ได้ข้อมูลทั้งหมด $\frac 1{k^2}$ความดี. แต่โดยทั่วไปเราทำได้ดีกว่า$\frac 1{k}$.

ดังนั้นเพื่อค้นหาวิธีแก้ไขที่มีข้อผิดพลาดที่ดีกว่าที่กำหนด $\epsilon$เราก็ต้องดูที่คอนเวอร์เจนต์ $\log_2 3$ กับตัวหารในละแวกของ $\frac 1\epsilon$.

นี่คือโค้ด Sage / Python ที่ทำงานนั้น Sage คือชุดของไลบรารีทางคณิตศาสตร์ที่สร้างขึ้นจากภาษาโปรแกรม Python ที่เป็นที่นิยม มันมีการคำนวณทางคณิตศาสตร์ที่แม่นยำโดยพลการและสิ่งอำนวยความสะดวกสำหรับการแสดงพีชคณิตสัญลักษณ์ แต่ฉัน (ส่วนใหญ่) หลีกเลี่ยงคุณสมบัติของ Sage ในรหัสนี้ (นอกเหนือจากการคำนวณทางคณิตศาสตร์ที่แม่นยำโดยพลการ) เพื่อให้ง่ายต่อการโอนไปยังภาษาอื่น ๆ หากต้องการ ฉันยังหลีกเลี่ยง "Pythonisms" ส่วนใหญ่นอกเหนือจากความสามารถของ Python ในการคืนค่าหลายค่าจากฟังก์ชัน

# Numeric precision. Standard IEEE 754 binary64
# numbers (aka doubles) have 53 bits of precision.
bits = 53

# Limit the length of the continued fraction
depth = 20

def dio(q, p, x, y, d):
    """ Given q, p, x, y: q*x - p*y == 1,
        find the smallest m, n > 0:
        q*m - p*n == d
    """
    m = x * d
    n = y * d
    u = min(m // p, n // q)
    m -= u * p
    n -= u * q
    assert q*m - p*n == d
    return m, n

log2 = log(2).n(bits)
log3 = log(3).n(bits)
def func(m, n):
    """ Calculate 2**m / 3**n """
    # The naive form is too slow for large args,
    # and chews up a lot of RAM because it uses
    # arbitrary precision integer arithmetic.
    # So we use logs instead.
    #return (2**m / 3**n).n(bits)
    return exp(m * log2 - n * log3).n(bits)

def cont_frac(f, depth):
    """ Build lists of the convergents of
        the continued fraction of f
    """
    f = f.n(bits)
    num = [0, 1]
    den = [1, 0]
    for i in range(depth):
        a = floor(f)
        n = num[-2] + a * num[-1]
        d = den[-2] + a * den[-1]
        #print(a, n, d)
        num.append(n)
        den.append(d)
        f -= a
        if f < 1e-10:
            break
        f = 1 / f
    return num, den

num, den = cont_frac(log(3, 2), depth)

@interact
def main(r=sqrt(2), epsilon=1/1000):
    print("r:", r.n(bits))
    f = log(r, 2)
    s = 1
    digits = 2
    for i in range(3, depth+2):
        s = -s
        p = num[i]
        q = den[i]
        x = num[i-1] * s
        y = den[i-1] * s
        assert q*x - p*y == 1
        fq = f * q
        d0 = floor(fq)
        d1 = ceil(fq)
        print(f"\n{i}: {p} / {q}, {d0} {d1}")
        dseq = [d0]
        if d0 < d1:
            dseq = [d0, d1]
        else:
            dseq = [d0]
        for d in dseq:
            m, n = dio(q, p, x, y, d)
            v = func(m, n)
            eps = abs(r - v).n(bits)
            if eps > 0:
                digits = 1 - floor(log(eps, 10))
            print(f"m: {m}, n: {n}")
            print(f"v: {v:.{digits}f}, eps: {eps:.3e}")
            if eps < epsilon:
                return

นี่คือผลลัพธ์ของโปรแกรมที่ค้นหาวิธีแก้ปัญหาด้วย $\epsilon=10^{-6}$:

r: 1.41421356237310

3: 2 / 1, 0 1
m: 0, n: 0
v: 1.00, eps: 4.142e-1
m: 1, n: 0
v: 2.00, eps: 5.858e-1

4: 3 / 2, 1 1
m: 2, n: 1
v: 1.333, eps: 8.088e-2

5: 8 / 5, 2 3
m: 2, n: 1
v: 1.333, eps: 8.088e-2
m: 7, n: 4
v: 1.58, eps: 1.660e-1

6: 19 / 12, 6 6
m: 10, n: 6
v: 1.4047, eps: 9.550e-3

7: 65 / 41, 20 21
m: 10, n: 6
v: 1.4047, eps: 9.550e-3
m: 56, n: 35
v: 1.440, eps: 2.603e-2

8: 84 / 53, 26 27
m: 10, n: 6
v: 1.4047, eps: 9.550e-3
m: 75, n: 47
v: 1.4209, eps: 6.645e-3

9: 485 / 306, 153 153
m: 243, n: 153
v: 1.41494, eps: 7.230e-4

10: 1054 / 665, 332 333
m: 812, n: 512
v: 1.41343, eps: 7.844e-4
m: 243, n: 153
v: 1.41494, eps: 7.230e-4

11: 24727 / 15601, 7800 7801
m: 12891, n: 8133
v: 1.414196, eps: 1.800e-5
m: 11837, n: 7468
v: 1.414257, eps: 4.373e-5

12: 50508 / 31867, 15933 15934
m: 12891, n: 8133
v: 1.414196, eps: 1.800e-5
m: 37618, n: 23734
v: 1.4142213, eps: 7.728e-6

13: 125743 / 79335, 39667 39668
m: 88126, n: 55601
v: 1.4142110, eps: 2.546e-6
m: 37618, n: 23734
v: 1.4142213, eps: 7.728e-6

14: 176251 / 111202, 55601 55601
m: 88126, n: 55601
v: 1.4142110, eps: 2.546e-6

15: 301994 / 190537, 95268 95269
m: 88126, n: 55601
v: 1.4142110, eps: 2.546e-6
m: 213869, n: 134936
v: 1.4142162, eps: 2.637e-6

16: 16785921 / 10590737, 5295368 5295369
m: 8241964, n: 5200100
v: 1.414213479, eps: 8.295e-8

และนี่คือเวอร์ชันสดที่คุณสามารถเล่นได้บนเซิร์ฟเวอร์ SageMath รหัสของฉันไม่ได้ถูกเก็บไว้บนเซิร์ฟเวอร์ แต่ถูกเข้ารหัสใน URL

หากคุณมีพฤติกรรมแปลก ๆ กับเจ้าตัวเล็ก $\epsilon$ลองเพิ่มจำนวนbitsตัวแปรส่วนกลาง (ที่ด้านบนสุดของไฟล์) การตั้งค่าเริ่มต้นที่ 53 ควรจะใช้ได้สำหรับ$\epsilon > 10^{-8}$หรือไม่ก็. คุณอาจต้องเพิ่มdepthเศษส่วนอย่างต่อเนื่อง


FWIW, $\log_2 3$ค่อนข้างสำคัญในทฤษฎีดนตรีทางคณิตศาสตร์ของเครื่องชั่งน้ำหนักอย่างเท่าเทียมกันอารมณ์ มาตราส่วน 12 โทนมาตรฐานใช้คอนเวอร์เจนท์$19/12$.

11 lhf Jan 12 2021 at 00:05

ปล่อย $G= \mathbb Z \log 2 + \mathbb Z \log 3$. แล้ว$G$ เป็นกลุ่มย่อยเพิ่มเติมของ $\mathbb R$. ตั้งแต่$\log 2 / \log 3$ ไม่มีเหตุผล $G$ไม่สามารถเป็นวัฏจักร [1] และต้องหนาแน่น [2] ดังนั้น,$\log r$ ประมาณโดยพลการโดยองค์ประกอบของ $G$.

[1] ถ้า $G = \mathbb Z \theta $แล้ว $\log 2 = a \theta$ และ $\log 3 = b \theta$ และอื่น ๆ $\log 2 / \log 3 = a/b $ มีเหตุผล

[2] ดู https://math.stackexchange.com/a/889775/589

HandeBruijn Jan 31 2021 at 03:32

Heuristics ของการพิสูจน์อื่น

เลม 1.
เศษส่วน$2^m/3^n$ อยู่ระหว่าง $r/3$ และ $2r$.
หลักฐาน.
ตามโปรแกรม - ตามที่ปรากฏในคำถาม เศษส่วนใด ๆ ที่มีขนาดเล็กกว่า$r$ คูณด้วย $2$ดังนั้น $r.2$เป็นขอบเขตบนของเศษส่วนเหล่านี้ เศษส่วนใด ๆ ที่มากกว่า$r$ ถูกหารด้วย $3$ดังนั้น $r/3$คือขอบเขตล่างของเศษส่วนเหล่านี้ ไม่มีเศษส่วนอื่น ๆ ยกเว้นเมื่อการวนซ้ำเริ่มต้น$$ r/3 < \frac{2^m}{3^n} < 2r $$ เลม 2.
ในลําดับ$2^m/3^n \to r$ไม่มีเศษส่วนสองตัวที่เหมือนกัน
หลักฐาน.
สมมติว่าเรามี$2^{m_1}/3^{n_1} = 2^{m_2}/3^{n_2}$.
มีสามกรณีที่แตกต่างกัน:

  1. $m_1 \neq m_2$ และ $n_1 = n_2$. แล้ว$2^{m_1} = 2^{m_2}$ ด้วยเหตุนี้ $m_1 = m_2$. ความขัดแย้ง.
  2. $n_1 \neq n_2$ และ $m_1 = m_2$. แล้ว$1/3^{n_1} = 1/3^{n_2}$ ด้วยเหตุนี้ $n_1 = n_2$. ความขัดแย้ง.
  3. $m_1 \neq m_2$ และ $n_1 \neq n_2$. จากนั้นเรามี:$$ \ln\left(\frac{2^{m_1}}{3^{n_1}}\right) = \ln\left(\frac{2^{m_2}}{3^{n_2}}\right) \quad \Longrightarrow \\ (m_1-m_2)\ln(2) - (n_1-n_2)\ln(3) = 0 \quad \Longrightarrow \\ \frac{m_1-m_2}{n_1-n_2} = \frac{\ln(3)}{\ln(2)} $$ แต่ $\,\ln(3)/\ln(2)\,$ไม่ใช่ตัวเลขที่มีเหตุผล ความขัดแย้ง.

สิ่งที่เรามีคือเศษส่วนจำนวนหนึ่งซึ่งแตกต่างกันทั้งหมด แต่ต้องพอดีกับช่วงเวลา $\,]r/3,2r[\,$. ซึ่งหมายความว่าเศษส่วนมีจำนวนมาก มาทำภาพกระบวนการวนซ้ำเวอร์ชันลอการิทึม เส้นสีแดงกำหนดโดย$\,\color{red}{\ln(3)y=\ln(2)x-\ln(r)}\,$วงกลมเล็ก ๆ คือเศษส่วนที่แมปบนเส้นตาราง $\,m/n \to (m,n)\,$จุดสีดำจำนวนมากคือเศษส่วนในกระบวนการวนซ้ำในขณะที่เพิ่มขึ้น $m$ และ $n$โดยเพิ่มทีละครั้ง โดเมนการทำซ้ำถูก จำกัด โดย:$\,\color{blue}{-\ln(2)\lt\ln(3)y-\ln(2)x+\ln(r)\lt\ln(3)}\,$. ในกรณีของเรา$r = 100$. คำนึงถึงลำดับที่เริ่มต้น

ดูเหมือนว่าจะต้องมีเศษส่วนใกล้เคียงกับเส้นสีแดงมากพอสมควรโดยกำหนดจำนวนจริงขึ้นมาใหม่ $r$ในคำถาม.
เราจะแน่ใจได้อย่างไรเกี่ยวกับเรื่องนี้? มาดูภาพความแออัดของการประมาณกัน$a$ ในช่วงเวลา $\,]r/3,2r[\,$, มาตราส่วนลอการิทึม: $$ a = m\ln(2)-n\ln(3)-\ln(r) \quad \mbox{with} \quad -\ln(3) < a < \ln(2) $$ เส้นสีแดงอยู่ที่ $a = 0$ค่าที่ต้องการ

นอกจากนี้ตัวเลข / การทดลองแบบกราฟิกที่แสดงให้เห็นว่าการกระจายของเศษส่วนน่าจะเป็นเครื่องแบบ ในขณะที่ต้องการการยืนยันเพิ่มเติมเกี่ยวกับสิ่งนี้เราได้ทำสิ่งต่อไปนี้โดยพูดในแง่ของ (Delphi) Pascal:

โปรแกรม opnieuw;
ช่วงขั้นตอน (var A, B: double); หลากหลาย h: สองครั้ง; เริ่ม A: = สุ่ม; B: = สุ่ม; ถ้า A> B แล้ว เริ่ม h: = B; B: = A; ตอบ: = h; จบ; จบ;
ขั้นตอน proef (r: สองครั้ง); const veel: จำนวนเต็ม = 1000000000; หลากหลาย x, l2, l3, lr, A, B: สองเท่า; m, n, โทร, t: จำนวนเต็ม; เริ่ม l2: = ln (2); l3: = ln (3); lr: = ln (r); ช่วงเวลา (A, B); ตอบ: = -l3 + A * (l2 + l3); B: = -l3 + B * (l2 + l3); m: = 0; n = 0; โทร: = 0; เสื้อ: = 0; ในขณะที่โทร <veel do เริ่ม x: = m * l2 - n * l3 - lr; ถ้า x <0 แล้ว m: = m + 1 else n: = n + 1; ถ้า (-l3 <x) และ (x <+ l2) จากนั้น tel: = tel + 1; ถ้า (A <x) และ (x <B) แล้ว t: = t + 1; จบ; Writeln ((BA) / (l2 + l3), '=', t / โทร); จบ;
เริ่ม สุ่ม; สุ่ม; proef (1,000); proef (0.001); proef (sqrt (2)); proef (1 / sqrt (2)); ในขณะที่ทำจริง proef (สุ่ม); จบ.

คำอธิบาย. สร้างช่วงเวลาแบบสุ่ม$\,]A,B[\,$ ข้างใน $\,]-\ln(3),+\ln(2)[\,$. ความยาวของช่วงเวลาหลังคือ$\,\ln(3)+\ln(2)=\ln(6)\,$ความยาวของอดีตคือ $\,(B-A)\,$. นับ (ลอการิทึม$x$ ของ) เศษส่วน $\,(2^n/3^n)/r\,$ในทั้งสองช่วงเวลา ปล่อย$N$ เป็นจำนวนรวม (โทร) ของการเดินทางและ $n$ เป็นตัวเลข (t) ของการวนซ้ำใน $\,]A,B[\,$. จากนั้นการแจกแจงของค่าประมาณ$x$มีความสม่ำเสมอในกรณีที่:$$ \lim_{N\to\infty}\frac{n}{N} = \frac{B-A}{\ln(6)} $$มาตรวจสอบกัน. ผลลัพธ์หลังจากการทำซ้ำพันล้านครั้งในแต่ละบรรทัด:

 6.58467502100393E-0001 = 6.58467500000000E-0001
 3.98733151378110E-0001 = 3.98733149000000E-0001
 1.56895805848762E-0001 = 1.56895804000000E-0001
 5.34354087430984E-0002 = 5.34354050000000E-0002
 4.04224734520540E-0001 = 4.04224734000000E-0001
 2.33572337077931E-0001 = 2.33572341000000E-0001
 4.06758418539539E-0001 = 4.06758418000000E-0001
 1.46495995344594E-0001 = ....

แต่เราจะพิสูจน์ได้อย่างไรว่าเป็นการกระจายสม่ำเสมอ?