解决 伪造概率

丹林

活跃成员
已加入
2018年10月19日
留言内容
28
编程经验
10+
伪造概率

探索随机伪造的可能性
在一个小时内创建了qbasic qb64程序
和使用公式的表格

= CASEBETWEEN(0; 1)
= IF(B3 = B2; C2 +1; 0)
= COUNTIF(C $ 3:C $ 55000; D2)
= SUM(E2:E10)
= E2 / E3

兰德us012.png


想法:伪造50%的机会

结果:

研究E绿色纯excel:
兰德omly distributed naturally

研究0黄色qb 0:
兰德omly distributed naturally

红色qb中的研究1:
连续显式伪造相等数

研究2紫罗兰色qb 2:
聪明的假货,但并非全部编程
和偏斜由于算法

结论:识别假货随机真实

Visual Basic:
' 0.bas
OPEN "0.txt" FOR OUTPUT AS #1
FOR s = 1 TO 50000: PRINT #1, (INT(RND * 1000) MOD 2): NEXT
CLOSE
Visual Basic:
' 1.bas
OPEN "1.txt" FOR OUTPUT AS #1
FOR d = 1 TO 5: FOR s = 1 TO 100
FOR i = 1 TO s: PRINT #1, 1: NEXT
FOR i = 1 TO s: PRINT #1, 0: NEXT
NEXT: NEXT: CLOSE
Visual Basic:
' 2.bas
OPEN "2.txt" FOR OUTPUT AS #1
FOR k = 1 TO 100: FOR s = 1 TO 7
FOR d = 1 TO 2 ^ (7 - s)
FOR i = 1 TO s: PRINT #1, 1: NEXT
FOR i = 1 TO s: PRINT #1, 0: NEXT
NEXT: NEXT: NEXT: CLOSE

序列伪造洗牌
变成随机序列

并开始对应于分布

falsernd33.gif


比程序更胜一筹
但是C#综合程序可以在线进行


使用随机综合程序
分为小0和大1
合成55000随机并经过测试

尽管连续0 ... 7的数量是正常的
连续更大的数字是不可能的
因此顺序比平时差

Visual Basic:
'rndxx.bas
OPEN "rndxxx.txt" FOR OUTPUT AS #1

FOR i = 1 TO 55555: r = Rand
IF r < 0.5 THEN PRINT #1, 0 ELSE PRINT #1, 1
'IF r <= 0.5 THEN PRINT #1, 0 ELSE PRINT #1, 1
'IF r <= 0.7 THEN PRINT #1, 0 ELSE PRINT #1, 1
NEXT: CLOSE

FUNCTION Rand: STATIC Seed
x1 = (Seed * 214013 + 2531011) MOD 2 ^ 24
Seed = x1: Rand = x1 / 2 ^ 24
END FUNCTION

rndxx.png


在C#中随机性也很低
我想人们理解是正常的

C#:
using System;using System.Linq;
using System.Collections.Generic;
using System.Text.RegularExpressions;
namespace Rextester
{ public class Program
    { public static void Main(string[] args)
        { Random rand = new Random();
for (int i = 1; i < 5555; i++)
{ var d = rand.Next(2);
if (d<0.5)
    Console.WriteLine("0");
     else Console.WriteLine("1");
}}}}

在线编译器: 丹林概率,C#-右旋

重大可靠概率:洗牌
即:2边且即:整数概率

程序peretas.bas创建一个序列
互联网上的手动算法随机选择a:0和1

并且程序会创建随机d:0 ... 77777
用于对数组d进行改组和排序
也许不建议重复洗牌1000000

Visual Basic:
'peretas.bas
DIM a(55555), d(55555)

OPEN "aa.txt" FOR OUTPUT AS #1: OPEN "dd.txt" FOR OUTPUT AS #2
OPEN "aaaa.txt" FOR OUTPUT AS #3: OPEN "dddd.txt" FOR OUTPUT AS #4

FOR i = 1 TO 55555: r = Rand: a(i) = INT(r * 2): PRINT #1, a(i): NEXT
FOR i = 1 TO 55555: r = Rand: d(i) = INT(r * 77777): PRINT #2, d(i): NEXT

FOR i = 1 TO 55554: FOR j = i TO 55555
IF d(i) > d(j) THEN SWAP d(i), d(j): SWAP a(i), a(j)
NEXT: NEXT

FOR i = 1 TO 55555: PRINT #3, a(i): PRINT #4, d(i): NEXT
CLOSE

FUNCTION Rand
STATIC Seed
x1 = (Seed * 214013 + 2531011) MOD 2 ^ 24
Seed = x1
Rand = x1 / 2 ^ 24
END FUNCTION

Excel中的理论值Excel通过公式

=C3/2
=D3+C4
= D4 * 55000

显示:从55000出来的7个步骤中涵盖了54570
顺序中的数字
可能偏离背叛了一次假事故

和改组涉及54885接近理论

Excel中的理论值Excel通过公式


fldelen.gif
 

跳伞者

工作人员
已加入
2019年4月6日
留言内容
2,611
地点
弗吉尼亚州切萨皮克
编程经验
10+
在您的LCG的VB实现中,您能否解释使用24位的选择?这些主数与用于生成随机数的MS VB算法相关联,但是在MS LCG的情况下,它们将31位用于下一个状态,但仅返回低16位作为随机数。
 
Last edited:

丹林

活跃成员
已加入
2018年10月19日
留言内容
28
编程经验
10+
程序使用页面中的算法:

伪造概率

而且我还在探索随机正弦和余弦
给定随机时间
并且有必要检查理论上更接近的
 

跳伞者

工作人员
已加入
2019年4月6日
留言内容
2,611
地点
弗吉尼亚州切萨皮克
编程经验
10+
在该线程的第3条中,Steve最后说在第1条中使用的常量实际上并未使用。相反,它使用的是使用32位的常量。然后,他随后添加了一些BASIC代码,要求人们测试24位版本。
 

丹林

活跃成员
已加入
2018年10月19日
留言内容
28
编程经验
10+
我的成就基本& excel & c#
写入磁盘,然后合并为大数据
或在在线编译器中打印到屏幕

检查C#程序
我需要先了解如何附加功能

ideone.com/lgxbXJ

C#:
using System;using System.Linq;
using System.Collections.Generic;
using System.Text.RegularExpressions;
namespace Rextester
{ public class Program
    { public static void Main(string[] args)
        { Random rand = new Random();
for (int i = 1; i < 55; i++)
{ double d = rand.Next(2);
Console.WriteLine(Math.Ceiling(d));
}}}}


C#:
float func_rnd(float n,int32 passed){
    if (new_error) return 0;
   
    static uint32 m;
    if (!passed) n=1.0f;
    if (n!=0.0){
        if (n<0.0){
            m=*((uint32*)&n);
            rnd_seed=(m&0xFFFFFF)+((m&0xFF000000)>>24);
        }
        rnd_seed=(rnd_seed*16598013+12820163)&0xFFFFFF;
    }     
    return (double)rnd_seed/0x1000000;
}

一月会发生什么
适用于功能和志趣相投的人
介绍我的设计比较容易
我目前在该论坛上会提供什么信息

确保提供指向该主题的链接

在线编译器的脚本:
创建0或1的垂直链
最小数量55555和用于检查55件

如果程序返回随机0<rand<1
然后转向与0.5进行比较
或使用公式:整数,取自:随机+ 0.5

所以你得到一个通用的外壳
并且可以在线应用其他随机功能

在线编译器C#:
 
Last edited:

跳伞者

工作人员
已加入
2019年4月6日
留言内容
2,611
地点
弗吉尼亚州切萨皮克
编程经验
10+
C# has methods, not functions. The func_rnd() you have above is a C function. You have to re-write it into C#. Above you said that you know C#, so you should know that code there will not work as is.

Also, in the .NET Framework Random.Next() returns an integer, why are you treating the return value as a floating point number?
 
Last edited:

丹林

活跃成员
已加入
2018年10月19日
留言内容
28
编程经验
10+
检查PI数位的随机性

使用pi的55,000位数字
Word中的first通过替换翻译为列
Excel编译公式以划分为:
偶数\奇数\小\大

然后用我的桌子
同时与理论分离进行比较

结果:两个部门的平均值:0.5
和分离真正地匹配机会
而且仍然有可能洗牌
并且仍然有可能探索其他常数和根

pi55.png


raspred.png


任务的含义:给人真正的机会是不自然的
并有可能合成低功率的人类概率

但是如果我们谈论克服机会
理解概率波可提高可靠性

概率波可提高可靠性:
我过去十周年的发展
 
Last edited:

跳伞者

工作人员
已加入
2019年4月6日
留言内容
2,611
地点
弗吉尼亚州切萨皮克
编程经验
10+

丹林

活跃成员
已加入
2018年10月19日
留言内容
28
编程经验
10+
我是在RNG的随机算法中发明的
在哪里使用三角学

检查显示分配不正确
比较偶数\奇数和小\大
但改组将数组变成普通数组

我在学校想出了暴雪算法
在上个世纪甚至在旧政权和我们这个世纪
大约相同,也叫涡旋

暴雪算法:数字1是随机的,并且已添加
随机增量和控制范围
并在必要时控制数字的重复

Visual Basic:
'VYUGA.bas
DIM a(55555)
RANDOMIZE TIMER: CLS
OPEN "VYUGA.txt" FOR OUTPUT AS #1
d=37
a(1) = INT(RND*d)+1
PRINT #1, a(1)
FOR i = 2 TO 55555
    a(i) = a(i-1) + INT(RND*3*d)+1
    22 IF a(i) > d THEN a(i) = a(i)-d: GOTO 22
    PRINT #1, a(i)
NEXT
Ideone.com
C#:
//VYUGA.cs
using System;using System.Linq;
using System.Collections.Generic;
using System.Text.RegularExpressions;
namespace VYUGA
{ public class Program
    { static double w; 
	static void Main(string[] args) 
        { Random rand = new Random();
int d=37;
double s = rand.Next(5000000);
double a = Math.Round(d*s/5000000)+1;
Console.WriteLine(a);

for (int i = 1; i < 255; i++)
{ w = rand.Next(3000000)+1;
double v = Math.Round(w*d/1000000)+1;
a=a+v;
da: if (a>d) 
{ a=a-d; goto da; }
Console.WriteLine(a);}
Console.ReadKey(); }}}
检查显示分布是否良好
比较偶数\奇数和小\大

暴雪突然使正常随机性变成三角函数

因此我正在寻找
用于梅森捻线机C#形式的算法& qbasic

最近的步骤:通过弱算法改组
的随机性是正常的随机性
 
Last edited:

跳伞者

工作人员
已加入
2019年4月6日
留言内容
2,611
地点
弗吉尼亚州切萨皮克
编程经验
10+
至于上面的C#代码,为什么不修改一下:
C#:
a=a+v;
da: if (a>d) 
{ a=a-d; goto da; }

C#:
a=(a+v) % (d+1);
 

丹林

活跃成员
已加入
2018年10月19日
留言内容
28
编程经验
10+
最近的步骤:通过弱算法进行混洗
弱随机性是正常的随机性

顺序不好
并以一定距离将其插入Excel中的2列中
在第二列的左到右是一行中的一列数字
和列从最大到最小从头到尾排序

分组在一起:反向和正向序列
然后按相反的顺序对两者进行排序
顺序会同时洗牌。

测试显示改组正常
偶数\奇数和大\小的顺序

没有rnd的自动算法直接读取数组
并立即出现一个数组反向:...这是一台计算机...

排序反向数组会重排正向数组
事实证明顺序是正常的

Visual Basic:
'tasov.bas
DIM a(55000), d(55000)
OPEN "aa.txt" FOR INPUT AS #1
OPEN "dd.txt" FOR OUTPUT AS #2

FOR i = 1 TO 55000
    INPUT #1, a(i): d(55000 - i + 1) = a(i):NEXT

FOR i = 1 TO 54999: FOR j = i TO 55000
        IF d(i) > d(j) THEN SWAP d(i), d(j): SWAP a(i), a(j)
NEXT: NEXT

FOR i = 1 TO 55000: PRINT #2, a(i): NEXT: CLOSE
 

丹林

活跃成员
已加入
2018年10月19日
留言内容
28
编程经验
10+
谢谢你催我:
我今天有一个档案,一切都将进入档案

从第一时间开始赚钱
并适合学习C#
C#:
//tasov.cs
using System; using System.Linq;
using System.Collections.Generic;
using System.Text; using System.IO;
namespace tasov
{ class Program
    { static long[] a; static long[] d;
        static void Main(string[] args)
        {a = new long[55500]; d = new long[55500]; 
var inpFile = new StreamReader("aa.txt");
for (int i = 1; i <= 55000; i++) 
{ a[i] = Convert.ToInt64(inpFile.ReadLine());
d[55000-i+1] = a[i]; }

for (int i = 1; i <= 54999; i++) 
for (int j = i; j <= 55000; j++) 
if (d[i] > d[j])
{ var temp = d[i]; d[i] = d[j]; d[j] = temp;
temp = a[i]; a[i] = a[j]; a[j] = temp; }

var outFile = new StreamWriter("vv.txt");
for (int i = 1; i <= 55000; i++) 
outFile.WriteLine(a[i]);
Console.ReadKey();}}}

我通过tasov.bat进行编译
C#:
csc /nologo tasov.cs
pause

选中:结果相同
 
Last edited:

跳伞者

工作人员
已加入
2019年4月6日
留言内容
2,611
地点
弗吉尼亚州切萨皮克
编程经验
10+
您为什么要用这种方式进行冒泡排序:
C#:
for (int i = 1; i <= 54999; i++) 
for (int j = i; j <= 55000; j++) 
if (d[i] > d[j])
{ var temp = d[i]; d[i] = d[j]; d[j] = temp;
temp = a[i]; a[i] = a[j]; a[j] = temp; }
当你可以做的时候:
C#:
Array.Sort(a);
Array.Reverse(a);
 

跳伞者

工作人员
已加入
2019年4月6日
留言内容
2,611
地点
弗吉尼亚州切萨皮克
编程经验
10+
或者更好的是,由于第16个帖子说它正在使用LINQ,那么那么可能会 使用 LINQ to its fullest:
C#:
using System;
using System.Linq;
using System.Collections.Generic;
using System.IO;

namespace tasov
{
    class Program
    {
        static void Main()
        {
            var entries = Enumerable.Repeat(0, 55000)
                                    .Select(_ => int64.Parse(Console.ReadLine()))
                                    .OrderByDescending(e => e)
                                    .Select(v => v.ToString());
            File.WriteAllLines("vv.txt", entries);
        }
    }
}
 

丹林

活跃成员
已加入
2018年10月19日
留言内容
28
编程经验
10+
我将研究弱数组上的程序,但:
更仔细地:

一个= 15973
d = 37951是逆

排序d和从属a
d = 13579
a = 31759

我正在测试这个想法:RNG三角函数

创建了一个不通过验证的错误数组
二进制偶数\奇数\小\大

因此,我们在Excel中同样进行了混洗& basic & c#
只是使用这个坏数组

表示:顺序弱
通过一系列的弱点洗牌
变成正常序列

根据本主题的结果

在附加数组-d-a-v.zip中:原始数组aa.txt
基本数组dd.txt和基本数组vv.txt
 

附件

  • arrays-d-a-v.zip
    146.5 KB · Views: 9
Last edited:

跳伞者

工作人员
已加入
2019年4月6日
留言内容
2,611
地点
弗吉尼亚州切萨皮克
编程经验
10+
哦,我明白了。您试图根据d的排序方式重新排列数组a。对不起,我错过了。

但是,为什么还要对数字进行排序呢?我以为您只是在看数字的分布。分布不依赖于订单。
 
最佳 底部