bat利用随机数算 1/x (x^-1) 的近似值
bat吧
全部回复
仅看楼主
level 11
uchan 楼主
没什么用,只是无聊[滑稽]
2019年03月25日 12点03分 1
level 11
uchan 楼主
@echo off
set scale=10000
echo. 利用随机数获取1/x的值.
echo. 下限: 1 (不包含), 上限: 32767 (不包含)
:loop
set /p input=请输入x :
call :test %input% %scale%
echo. 1/%input% 约等于 0.%zero%%errorlevel%
echo.&pause>nul&goto :loop
:length
setlocal enabledelayedexpansion
set "a=%~1"&set n=0
:length_loop
if "!a!"=="" (endlocal&exit /b %n%)
set "a=!a:~0,-1!"&set /a "n=!n!+1"
goto :length_loop
:test
setlocal enabledelayedexpansion
set "i=0"&set "zero="&set tmp=0
for /l %%i in (0,1,%~2) do (set /a "rand=!random!%%%~1"&if !rand!==0 (set /a tmp=!tmp!+1))
call :length "%~1"
for /l %%i in (2,1,%errorlevel%) do (set "zero=!zero!0")
endlocal&set zero=%zero%&exit /b %tmp%
2019年03月25日 12点03分 2
1是包含的。。[滑稽]打错了
2019年03月25日 12点03分
level 11
uchan 楼主
Java:
/**
* 利用随机数算1/x
* @param x,必须大于0
*/
String test(int x, int scale) {
final Random r = new Random();
StringBuilder zero = new StringBuilder();
{
int tmp = String.valueOf(x).length() - 1;
for (int i = 0; i < tmp;i++) {
zero.append(0);
}
}
int ret = 0;
for (int i = 0; i < scale; i++) {
if(r.nextInt(x) == 0) {
ret = ret + 1;
}
}
return new StringBuilder().append("0.").append(zero).append(ret).toString();
}
2019年03月25日 12点03分 3
scale最好是 10的n次方(n≥0) 这种数,比如1,10,100,1000......要不处理比较麻烦[滑稽]
2019年03月25日 12点03分
level 10
顶上[滑稽][大拇指]
2019年03月25日 12点03分 4
1