Advance
This example demonstrates the Advance() method, which skips ahead N steps in the random sequence. It’s equivalent to calling NextInt() N times, but much more efficient for large N.
Expected Output
Result after <iterations> iterations: <result_value>The <result_value> is the random number at position <iterations> in the sequence. The example validates that manual iteration and advance() produce identical results.
Source Codes
package main
import ( "fmt"
"github.com/pseudata/pseudata")
func main() { gen1 := pseudata.NewGenerator(42, 0) gen2 := pseudata.NewGenerator(42, 0)
gen1.Advance(10_000_000)
for range 10_000_000 { gen2.NextInt() }
result1 := gen1.NextInt() result2 := gen2.NextInt()
if result1 != result2 { panic(fmt.Sprintf("Results don't match! Advance=%d, Loop=%d", result1, result2)) }
println(result1)}import dev.pseudata.Generator;
public class Main { public static void main(String[] args) {
var gen1 = new Generator(42, 0); var gen2 = new Generator(42, 0);
gen1.advance(10_000_000);
for (int i = 0; i < 10_000_000; i++) { gen2.nextInt(); }
var result1 = gen1.nextInt(); var result2 = gen2.nextInt();
if (result1 != result2) { throw new RuntimeException( String.format("Results don't match! Advance=%d, Loop=%d", result1, result2)); }
System.out.println((long) result1 & 0xFFFFFFFFL); }}from pseudata import Generator
gen1 = Generator(42, 0)gen2 = Generator(42, 0)
gen1.advance(10_000_000)
for _ in range(10_000_000): gen2.next_int()
result1 = gen1.next_int()result2 = gen2.next_int()
if result1 != result2: raise Exception(f"Results don't match! Advance={result1}, Loop={result2}")
print(result1)import { Generator } from "@pseudata/core";
const gen1 = new Generator(42, 0);const gen2 = new Generator(42, 0);
gen1.advance(10_000_000);
for (let i = 0; i < 10_000_000; i++) { gen2.nextInt();}
const result1 = gen1.nextInt();const result2 = gen2.nextInt();
if (result1 !== result2) { throw new Error(`Results don't match! Advance=${result1}, Loop=${result2}`);}
console.log(result1);© 2025 Pseudata Project. Open Source under Apache License 2.0. · RSS Feed