随机数 -- 线性同余

2024-06-14 16:18
文章标签 线性 随机数 同余

本文主要是介绍随机数 -- 线性同余,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

#include<iostream>   
#include<iomanip>  
#include<stdlib.h> 
#include<math.h>
using namespace std;const int sizes = 100;double random( int& temp ){int i;int result;static int x1,x2,x3;static int iff;static double ran[sizes];double rm1 = 0.0000038580247;double rm2 = 0.0000074373773;int m1     = 259200;int m2     = 134456;int m3     = 243000;int a1     = 7141;int a2     = 8121;int a3     = 4561;int c1     = 54773;int c2     = 28411;int c3     = 51349;if( ( temp < 0 ) || ( iff == 0 ) ){iff = 1;x1  = ( c1 - temp ) % m1;x1  = ( x1 * a1 + c1 ) % m1;x2  = x1 % m2;x1  = ( x1 * a1 + c1 ) % m1;x3  = x1 % m3;for( i = 1; i < sizes; ++i ){x1 = ( a1 * x1 + c1 ) % m1;x2 = ( a2 * x2 + c2 ) % m2;ran[i] = ( double( x1 ) + double( x2 ) * rm2 ) * rm1;}temp = 1;}x1 = ( x1 * a1 + c1 ) % m1;x2 = ( x2 * a2 + c2 ) % m2;x3 = ( x3 * a3 + c3 ) % m3;i = 1 + int( ( ( sizes - 1 ) * x3 ) / m3 );if( ( i > sizes - 1 ) || ( i < 1 ) ){cout << "abnormal exit." << endl;return 1;}result = ran[i];ran[i] = ( float( x1 ) + float( x2 ) * rm2 ) * rm1;return result;
}double function( double x1, double x2, double x3, double x4 ){double t = sqrt( x1 * x1 + x2 * x2 + x3 * x3 + x4 * x4);return t;
}void main(){double yprob[4], a, b, pi, x1, x2, x3, x4, k;int iy[4], temp, j, i, m;temp = -1;pi   = 3.1415926;a    = 0.0;b    = 0.0;for( i = 0; i <= 3; ++i )iy[i] = 0;cout << "Volume of nuit n-sphere,n=2,3,4" << endl;cout << "# points pi [4/3]*pi [1/2]*pi^2" << endl;for( j = 1; j <= 15; ++j ){for( k = pow( 2, ( j - 1 ) ); k <= pow( 2, j ); ++k ){x1 = random( temp );x2 = random( temp );x3 = random( temp );x4 = random( temp );if( function( x1, x2, a, b ) < 1.0 )iy[1] = iy[1] + 1;if( function( x1, x2, x3, a) < 1.0 )iy[2] = iy[2] + 1;if( function( x1, x2, x3, x4) < 1.0 ) iy[3] = iy[3] + 1;}for( i = 1; i <= 3; i++ )yprob[i] = 1.0 * pow( 2, ( i + 1 ) ) * iy[i] / pow( 2, j );cout << setprecision( 0 ) << setiosflags( ios::fixed ) << setw( 8 ) << pow( 2, j );for( m = 1; m <= 3; ++m )cout << setprecision( 6 ) << setiosflags( ios::fixed ) << setw( 14 ) << yprob[m];cout << endl;}cout << setprecision( 6 ) << setiosflags( ios::fixed ) << setw( 8 ) << "actual" << pi;cout << setprecision( 6 ) << setiosflags( ios::fixed ) << setw( 14 ) << 4.0 * pi / 3.0;cout << setprecision( 6 ) << setiosflags( ios::fixed ) << setw( 14 ) << 0.5 * pow( pi, 2 ) << endl;return 0;}


这篇关于随机数 -- 线性同余的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/1060896

相关文章

线性因子模型 - 独立分量分析(ICA)篇

序言 线性因子模型是数据分析与机器学习中的一类重要模型,它们通过引入潜变量( latent variables \text{latent variables} latent variables)来更好地表征数据。其中,独立分量分析( ICA \text{ICA} ICA)作为线性因子模型的一种,以其独特的视角和广泛的应用领域而备受关注。 ICA \text{ICA} ICA旨在将观察到的复杂信号

明明的随机数处理问题分析与解决方案

明明的随机数处理问题分析与解决方案 引言问题描述解决方案数据结构设计具体步骤伪代码C语言实现详细解释读取输入去重操作排序操作输出结果复杂度分析 引言 明明生成了N个1到500之间的随机整数,我们需要对这些整数进行处理,删去重复的数字,然后进行排序并输出结果。本文将详细讲解如何通过算法、数据结构以及C语言来解决这个问题。我们将会使用数组和哈希表来实现去重操作,再利用排序算法对结果

✨机器学习笔记(二)—— 线性回归、代价函数、梯度下降

1️⃣线性回归(linear regression) f w , b ( x ) = w x + b f_{w,b}(x) = wx + b fw,b​(x)=wx+b 🎈A linear regression model predicting house prices: 如图是机器学习通过监督学习运用线性回归模型来预测房价的例子,当房屋大小为1250 f e e t 2 feet^

【高等代数笔记】线性空间(一到四)

3. 线性空间 令 K n : = { ( a 1 , a 2 , . . . , a n ) ∣ a i ∈ K , i = 1 , 2 , . . . , n } \textbf{K}^{n}:=\{(a_{1},a_{2},...,a_{n})|a_{i}\in\textbf{K},i=1,2,...,n\} Kn:={(a1​,a2​,...,an​)∣ai​∈K,i=1,2,...,n

带头结点的线性链表的基本操作

持续了好久,终于有了这篇博客,链表的操作需要借助图像模型进行反复学习,这里尽可能的整理并记录下自己的思考,以备后面复习,和大家分享。需要说明的是,我们从实际应用角度出发重新定义了线性表。 一. 定义 从上一篇文章可以看到,由于链表在空间的合理利用上和插入、删除时不需要移动等优点,因此在很多场合下,它是线性表的首选存储结构。然而,它也存在某些实现的缺点,如求线性表的长度时不如顺序存储结构的

浙大数据结构:02-线性结构4 Pop Sequence

这道题我们采用数组来模拟堆栈和队列。 简单说一下大致思路,我们用栈来存1234.....,队列来存输入的一组数据,栈与队列进行匹配,相同就pop 机翻 1、条件准备 stk是栈,que是队列。 tt指向的是栈中下标,front指向队头,rear指向队尾。 初始化栈顶为0,队头为0,队尾为-1 #include<iostream>using namespace std;#defi

深度学习与大模型第3课:线性回归模型的构建与训练

文章目录 使用Python实现线性回归:从基础到scikit-learn1. 环境准备2. 数据准备和可视化3. 使用numpy实现线性回归4. 使用模型进行预测5. 可视化预测结果6. 使用scikit-learn实现线性回归7. 梯度下降法8. 随机梯度下降和小批量梯度下降9. 比较不同的梯度下降方法总结 使用Python实现线性回归:从基础到scikit-learn 线性

C#中的各种画刷, PathGradientBrush、线性渐变(LinearGradientBrush)和径向渐变的区别

在C#中,画刷(Brush)是用来填充图形(如形状或文本)内部区域的对象。在.NET框架中,画刷是System.Drawing命名空间的一部分,通常用于GDI+绘图操作。以下是一些常用的画刷类型: SolidBrush:用于创建单色填充的画刷。HatchBrush:用于创建具有图案填充的画刷。TextureBrush:用于创建具有图像纹理填充的画刷。LinearGradientBrush:用于创

(感知机-Perceptron)—有监督学习方法、非概率模型、判别模型、线性模型、参数化模型、批量学习、核方法

定义 假设输入空间(特征空间)是 χ \chi χ ⊆ R n \subseteq R^n ⊆Rn,输出空间是y = { + 1 , − 1 } =\{+1,-1 \} ={+1,−1} 。输入 x ∈ χ x \in \chi x∈χ表示实例的特征向量,对应于输入空间(特征空间)的点;输出 y ∈ y \in y∈y表示实例的类别。由输入空间到输出空间的如下函数: f ( x ) = s

逻辑回归与线性回归的目标函数和应用场景比较

概述 逻辑回归和线性回归是两种常用的预测模型,它们在目标函数和应用场景上存在显著差异。本文将详细比较这两种回归模型,并提供相应的代码示例。 线性回归 线性回归是一种预测连续数值的模型,其目标是找到特征( X )和目标变量( Y )之间的线性关系。线性回归的目标函数是最小化预测值和实际值之间的平方差,即均方误差(MSE)。 目标函数 线性回归的损失函数是均方误差: [ J(\theta)