分数模

分数模

最近遇到要计算分数模的问题(1/9*(5-8*6)%10  and  1/5 mod 18 ),然后搜索了很多资料,暂时解决了我的问题,记录如下:

首先要先了解一下正负数求模问题,因为负数求模和正数求模过程不一致

其次要知道一些模运算规则,因为一些模运算规则可以快速节省求解时间

最后就是求模的过程

1、带正负的模运算

正数的模运算和取余运算一致,但是负数的求模运算则要带符号,如下:

7 mod 4 = 3(商 = 1 或 2,1<2,取商=1)

-7 mod 4 = 1(商 = -1 或 -2,-2<-1,取商=-2)

7 mod -4 = -1(商 = -1或-2,-2<-1,取商=-2)

-7 mod -4 = -3(商 = 1或2,1<2,取商=1)

2、模运算相关规则

转载链接:http://www.hankcs.com/program/cpp/poj-1995-raising-modulo-numbers.html

基本性质:

  1. 若p|(a-b),则a≡b (% p)。例如 11 ≡ 4 (% 7), 18 ≡ 4(% 7)

  2. (a % p)=(b % p)意味a≡b (% p)

  3. 对称性:a≡b (% p)等价于b≡a (% p)

  4. 传递性:若a≡b (% p)且b≡c (% p) ,则a≡c (% p)

模运算与基本四则运算有些相似,但是除法例外。其规则如下:

(a + b) % p = (a % p + b % p) % p (1)

(a – b) % p = (a % p – b % p) % p (2)

(a * b) % p = (a % p * b % p) % p (3)

(a^b) % p = ((a % p)^b) % p (4)

结合律:

((a+b) % p + c) % p = (a + (b+c) % p) % p (5)

((a*b) % p * c)% p = (a * (b*c) % p) % p (6)

交换律:

(a + b) % p = (b+a) % p (7)

(a * b) % p = (b * a) % p (8)

分配律:

((a +b)% p * c) % p = ((a * c) % p + (b * c) % p) % p (9)

重要定理

若a≡b (% p),则对于任意的c,都有(a + c) ≡ (b + c) (%p);(10)

若a≡b (% p),则对于任意的c,都有(a * c) ≡ (b * c) (%p);(11)

若a≡b (% p),c≡d (% p),则 (a + c) ≡ (b + d) (%p),(a – c) ≡ (b – d) (%p),

(a * c) ≡ (b * d) (%p),(a / c) ≡ (b / d) (%p); (12)

note:

≡ (同余号,也是恒等号)

两个整数a,b,若它们除以整数m所得的余数相等,则称a,b对于模m同余   记作 a ≡ b (mod m)   读作a同余于b模m,或读作a与b关于模m同余。   比如 26 ≡ 14 (mod 12)

 

3、模运算定义

但是我这里并没有用到所谓的模运算定义(x=a/b mod n   等同于 bx=a + nk)

根据模运算性质,当a与n互素时,(axb)≡(axc)(mod n)   等同于 b ≡ c ( mod n)。故有:

1)1/5 (mod 18 )

改成  n≡1/5 (mod 18)

变换成  5n ≡ 1 (mod 18)

继续变换成 5n mod 18= 1

令 n = 1,2,3,4,...

当n=11 时, 5n mod =18 ,因此 1/5 mod 18 =11

2)1/9 (mod 10)

改成 n ≡ 1/9(mod 10)

变换成 9n ≡ 1(mod 10)

继续变换成 9n mod 10 = 1

令 n =1,2,3,...

当n=9时,9n mod 10 = 1,因此1/9 (mod 10)=9

3)1/9(5-8*6)%10

根据模运算(3),原式可得:

((1/9%10)(-43%10))%10

=(9*(-3))%10

=3

注:(9*(-3))%10

值为-3,模为3(区别正负数取模)

 

 

 

 

  • 6
    点赞
  • 38
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
要评估Python中的回归型的分数,可以使用Scikit-Learn库中的cross_val_score函数。这个函数可以用于计算回归型的性能指标,比如均方误差(MSE)和R平方值。在使用这个函数之前,您需要先加载相关的包,如sklearn.datasets中的make_regression、sklearn.model_selection中的cross_val_score和sklearn.linear_model中的LinearRegression。然后,您可以使用make_regression函数生成一些样本数据,并创建一个线性回归型。接下来,您可以使用cross_val_score函数来计算型的MSE和R平方值,通过指定scoring参数为'neg_mean_squared_error'和'r2'来实现。 示例代码如下: ``` # 加载生成回归的包及计算分数的相关包 from sklearn.datasets import make_regression from sklearn.model_selection import cross_val_score from sklearn.linear_model import LinearRegression # 指定X和y features, target = make_regression(n_samples=100, n_features=3, n_informative=3, n_targets=1, noise=50, coef=False, random_state=12) # 创建线性回归型 ols = LinearRegression() # 以MSE(残差平方和)法交叉验证型,这里Scikit-Learn内部约定指标取了负值 print(cross_val_score(ols, features, target, scoring='neg_mean_squared_error', cv=4)) # 以R方法交叉验证型 print(cross_val_score(ols, features, target, scoring='r2', cv=4)) ``` 在上述代码中,我们首先使用make_regression函数生成了一些样本数据,并将其存储在features和target变量中。然后,我们创建了一个线性回归型ols。接下来,我们使用cross_val_score函数两次,分别计算了型的MSE和R平方值。通过指定scoring参数为'neg_mean_squared_error'和'r2',我们可以得到相应的评价结果。 请注意,这里的MSE值是取了负值的,这是因为Scikit-Learn内部约定,越大的值表示型性能越差。而R平方值越接近1表示型的拟合效果越好。<span class="em">1</span><span class="em">2</span> #### 引用[.reference_title] - *1* *2* [Python回归型评估](https://blog.csdn.net/shenliang1985/article/details/113661205)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v93^chatsearchT3_2"}}] [.reference_item style="max-width: 100%"] [ .reference_list ]

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值