使用java中的随机值填充矩阵的空单元格

时间:2017-05-27 19:19:55

标签: java matrix random fill unique-values

我正在尝试在Java中创建一个矩阵,该矩阵只会在空位置填充随机值。我正在尝试这些代码,但它不起作用。 我做了两个嵌套的for循环,一个用于行,一个用于列。对于每个职位,我都会问0(我不确定如何对其进行控制)以及它是否生成随机坐标并以格式打印( I,J)。 但始终打印0

public int[][] getRandomPosition(int matrixlength) {
       int[][] grid = new int[matrixlength][matrixlength];

       for (int i = 0; i < grid.length; i++) {
          for (int j = 0; j < grid[i].length; j++) {
             if (grid[i][j] == 0) {
                grid[i][j] = (int) Math.random();
                System.out.print(grid[i][j]);
                return grid;
             }
          }
       }
       return null;
}

我知道如何解决手头的问题?

2 个答案:

答案 0 :(得分:0)

Math.radnom()返回的;@echo off ;;;;; rem start of the batch part ;;;;; ; ;for %%a in (/h /help -h -help) do ( ; if /I "%~1" equ "%%~a" if "%~2" equ "" ( ; echo compressing directory to cab file ; echo Usage: ; echo( ; echo %~nx0 "directory" "cabfile" ; echo( ; echo to uncompress use: ; echo EXPAND cabfile -F:* . ; echo( ; echo Example: ; echo( ; echo %~nx0 "c:\directory\logs" "logs" ; exit /b 0 ; ) ; ) ; ; if "%~2" EQU "" ( ; echo invalid arguments.For help use: ; echo %~nx0 /h ; exit /b 1 ;) ; ; set "dir_to_cab=%~f1" ; ; set "path_to_dir=%~pn1" ; set "dir_name=%~n1" ; set "drive_of_dir=%~d1" ; set "cab_file=%~2" ; ; if not exist "%dir_to_cab%\" ( ; echo no valid directory passed ; exit /b 1 ;) ; ;break>"%tmp%\makecab.dir.ddf" ; ;setlocal enableDelayedExpansion ;for /d /r "%dir_to_cab%" %%a in (*) do ( ; ; set "_dir=%%~pna" ; set "destdir=%dir_name%!_dir:%path_to_dir%=!" ; (echo(.Set DestinationDir=!destdir!>>"%tmp%\makecab.dir.ddf") ; for %%# in ("%%a\*") do ( ; (echo("%%~f#" /inf=no>>"%tmp%\makecab.dir.ddf") ; ) ;) ;(echo(.Set DestinationDir=!dir_name!>>"%tmp%\makecab.dir.ddf") ; for %%# in ("%~f1\*") do ( ; ; (echo("%%~f#" /inf=no>>"%tmp%\makecab.dir.ddf") ; ) ;makecab /F "%~f0" /f "%tmp%\makecab.dir.ddf" /d DiskDirectory1="%cd%" /d CabinetNameTemplate=%cab_file%.cab ;rem del /q /f "%tmp%\makecab.dir.ddf" ;exit /b %errorlevel% ;; ;;;; rem end of the batch part ;;;;; ;;;; directives part ;;;;; ;; .New Cabinet .set GenerateInf=OFF .Set Cabinet=ON .Set Compress=ON .Set UniqueFiles=ON .Set MaxDiskSize=1215751680; .set RptFileName=nul .set InfFileName=nul .set MaxErrors=1 ;; ;;;; end of directives part ;;;;; 大于或等于double且小于0.0。当您将其投放到1.0时,它将被截断为int。相反,您需要生成随机0。此外,在完全填满网格之前,您不应该返回网格。 E.g:

int

答案 1 :(得分:0)

为什么它始终打印为零的原因是Math.random()返回一个从0.00.9的数字,因此一旦你从{{{}返回结果1}}到Math.random()它总是会产生int

解决您的问题;您可以使用0类并使用其nextInt方法或使用以下公式:

Random

虽然我推荐前者,但你首先需要在外环之前创建一个grid[i][j] = (int)(Math.random() * (max - min) + min); // where min is the minimum value you want to generate and max is the max you want to generate (exclusive). 对象,即

Random

然后在您的Random randomGen = new Random(); 区域内,您可以执行以下操作:

if

还有另一个Random#nextInt重载,它允许您指定生成的随机数的边界。