【makefile】makefile中产生能稳定使用的随机数

事情是这样的,我需要在makefile中每次执行时候产生一个随机数,之后这个随机数我要在一条run指令中使用三次:传入VCS,用来产生log文件名和将log文件传给perl脚本,大概就是下面这种代码:

exoprt SEED := 一个随机数
run:
    @vcs -ntb_random $(SEED) > $(SEED).log
    @perl_script $(SEED).log

我希望每次run的时候产生不同的随机数,但是在一次run的过程中,这个SEED的值需要是固定的。

那么其实就可简化成下面这个场景,执行make test1时候应该打印三个一样的数:

SEED := 一个随机数
test1: test
	@echo $(SEED)

test:
	@echo $(SEED)
	@echo $(SEED)

为此我昨晚想到了凌晨1点多,因为我最开始使用的方法一直不行:

SEED := $$RANDOM
test1: test
	@echo $(SEED)

test:
	@echo $(SEED)
	@echo $(SEED)

打印结果:

[xiaotu@xiaotu-eda ~/my_work/vcs_demo]$make test1
13672
10520
27727

虽然产生了随机数,但是在一次使用中这个随机数会改变,因为每个$(SEED)都会被解析为$$RANDOM,每次都产生了新的随机数,并没能达到我要的效果!

于是查询了各种资料,最后选择了两种方式:借助perl,或者借助python;

如果采用perl语言产生随机数,例如产生8位数随机数可以这么写:

SEED := $(shell perl -e "print int(rand(100000000))")
test1: test
	@echo $(SEED)

test:
	@echo $(SEED)
	@echo $(SEED)

执行3次的结果:

[xiaotu@xiaotu-eda ~/my_work/vcs_demo]$make test1
81892076
81892076
81892076
[xiaotu@xiaotu-eda ~/my_work/vcs_demo]$make test1
5536259
5536259
5536259
[xiaotu@xiaotu-eda ~/my_work/vcs_demo]$make test1
29298633
29298633
29298633

如果采用python语言产生随机数,可以这么写:

SEED := $(shell python -c "from random import randint; print randint(0,99999999)")
test1: test
	@echo $(SEED)

test:
	@echo $(SEED)
	@echo $(SEED)

执行3次结果:

[xiaotu@xiaotu-eda ~/my_work/vcs_demo]$make test1
29968744
29968744
29968744
[xiaotu@xiaotu-eda ~/my_work/vcs_demo]$make test1
26819109
26819109
26819109
[xiaotu@xiaotu-eda ~/my_work/vcs_demo]$make test1
62379778
62379778
62379778

满足需求!!!

评论 6
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

尼德兰的喵

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值